放球游戏B

题目描述

校园里在上活动课,Red和Blue两位小朋友在玩一种游戏,他俩在一排N个格子里,自左到右地轮流放小球,每个格子只能放一个小球。第一个人只能放1个球,之后的人最多可以放前一个人的两倍数目的球,至少放1个球。最后面对没有空格而不能放球的人为输。

现在Red先走,问他有没有必胜的策略?

比如:N=4时,Red必胜。

输入输出格式

输入格式:

一行,一个整数N(2<N<100)。

输出格式:

一行,一个整数。如果Red必胜输出1,否则输出0。

输入输出样例

输入样例:

7

输出样例:

0

思路:找规律(看注释)。

//程序名:新的C++程序
//作者: 

#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;

int n;
bool a[10005][10005];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=i;j++)a[i][j]=a[i][j-1]|(a[i-j][min(j*2,i-j)]^1);//上一个球如果是必胜,则这个球必输(先手只能拿一个),或者拿了一定数量的球后,轮后手而剩下的球数必胜也是输。
    cout<<a[n][1];
    return 0;
}

原文地址:https://www.cnblogs.com/2006hanziwei/p/10789941.html

时间: 2024-10-10 09:47:38

放球游戏B的相关文章

【题解】放球游戏A

题目描述 校园里在上活动课,Red和Blue两位小朋友在玩一种游戏,他俩在一排N个格子里,自左到右地轮流放小球,每个格子只能放一个小球.每个人一次只能放1至5个球,最后面对没有空格而不能放球的人为输. 现在Red先走,问他有没有必胜的策略? 比如:N=6时,Red必败. 输入格式 一行,一个整数N(2<N<100). 输出格式 一行,一个整数.如果Red必胜输出1,否则输出0. 输入样例 9 输出样例 1 题解 先说结论,当$6|n$时,先手必输,否则先手必赢. 证明:当$6|n$时,先手放任

盒子放球

盒子放球问题 第一类: 将k个球放入n个不同的盒子中,每个盒子放球数>=0,求方法数 假设n个盒子分别放x1,x2,x3...xn,则x1+x2+x3+...+xn=k,令yi=xi+1(1<=i<=n),则yi>=1且y1+y2+...+yn=n+k,相当于求yi这个方程的解组数,可以看成插板问题,往n+k个物品中插入n-1个板,所以答案是C(n+k-1,n-1)=C(n+k-1,k) /* *输入说明:k个相同的球放入n个不同的盒子 *输入每行有两个正整数n和k */ int

盒子放球的DP

URAL1114 题目大意: 有N个盒子,有红色和蓝色两种颜色的球.红球有A个,篮球有B个.现在随意的向盒子里放球, 每个盒子可以放一种颜色的球,也可以放两种颜色的球,也可以不放球.球不必全都放进盒子里.问:总共有多少种方法. 状态dp[i][j][k] 表示向i个盒子里放j个篮球和k个红球的方案数目 状态转移方程:dp[i][j][k]=对dp[i-1][jj][kk] (0<=jj<=j,0<=kk<=k) 求和 最终结果是:在n个盒子里放  不定数目的球的种类数和即   对d

bzoj 4874: 筐子放球

4874: 筐子放球 Time Limit: 10 Sec  Memory Limit: 256 MB Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有 n 个球,用整数 1 到 n 编号.还有 m 个筐子,用整数1到m编号. 每个球只能放进特定的两个筐子之一,第 i 个球可以放进的筐子记为 Ai 和 Bi . 每个球都必须放进一个筐子中. 如果一个筐子内有奇数个球,那么我们称这样的筐子为半空的. 求半空的筐子最少有多少个. 小N看到题

【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏

物体碰撞检测是游戏编程里面非常常用的功能,一旦碰到就怎么怎么样,比如掉血等.Unity3D直接就提供了物体碰撞检测的接口,实现起来很方便.借此功能,完成了一个平衡球游戏,同时说明Unity3D的物体碰撞检测.键盘输入处理的检测的使用.游戏如下图所示: 一.场景布置 1.UI方面布置如下所示,基本就是<[Unity3D]对话框.隐藏与显示.拖拽>(点击打开链接)的内容,不赘述了.StartModal和GameoverModal本质是Image,将他们重叠在一起,一会儿将用脚本隐藏Gameover

js 躲避球游戏

js做的躲避球游戏 代码参见: <!DOCTYPE html> <html> <head> <meta charset="{CHARSET}"> <title></title> <style> * { margin: 0,0,0,0; } .button-area { margin-left: auto; margin-right: auto; width: 440px; min-height: 20p

放球问题 组合数学 转自百度百科

放球问题是指把 n个球放到 m个盒子里的方案数.它是组合数学的一个非常重要的问题.根据球是否相同,盒子是否有区别,是否允许有空盒以及n与m 的大小关系,放球问题可分成 16 个子问题.不同情况总结见下表. 1,n 个球有区别,m 个盒子有区别,允许有空盒,n≥m≥1 由于可以有空盒,所以每个球可以放到m个盒子的任意一个盒子里.又因为盒子是有区别的,所以对于任意一个球有m种不同的选择. n个球是有区别的,所以总共有 种方案.比如,当n=3 时,第 1 个球有m种不同选择,第 2 个球有m种不同选择

bzoj-4204 取球游戏

题意: 给出1到n的标号和m个球,每次随机取一个球,将其标号+1之后放回: 如果取出的标号是n就置为1,求执行k次操作之后每种球的期望个数: n<=1000,m<=10000000,k<=max int: 题解: 设f[t][i]为第t次操作时,标号为i的球的期望个数: 那么很容易列出转移方程: f[t][i]=f[t-1][i]+1/m*f[t-1][i-1]-1/m*f[t-1][i]: (边界i==1时同理) 这个状态显然是开不下的,但是可以考虑矩阵乘法优化: 得到一个形似这样的矩

【题解】二人放球

题目描述 校园里在上活动课,Red和Blue两位小朋友在玩一种游戏,他俩在一排N个格子里,自左到右地轮流放小球,每个格子只能放一个小球.每次Red放1个或2个红色的小球,Blue放1个或2个蓝色的小球,问有多少种可行的排放方案? 比如:N=4时,有10种可行的排列方案. 输入输出格式 输入格式 一行,一个整数N.(2<N<40). 输出格式 一行,一个整数M,可行的方案数. 输入输出样例 输入样例 3 输出样例 6 题解 易得这是一个类似Febonacci数列的东西,初始化时前两项乘2即可.