POJ 3688 Cheat in the Game(博弈论)
【题目链接】 http://poj.org/problem?id=3688
【题目大意】
有俩人玩一个取石子的游戏,你是裁判。
游戏中有W块石头和N张卡片,卡片上分别写着数字Ai。
玩家随机抽走一张卡片,按卡片上的数字从石头堆中取走相应数量的石头,
如果石头不够,玩家重新抽卡片,取走最后一块石头的玩家获胜;
如果石头堆为空仍然未分出胜负,则拿回所有石头和卡片重新开始。
现在先手玩家贿赂了你,请你帮他构造必胜条件。
游戏中的卡片是固定的,但W可供你操作。问有多少小于或等于M的W满足要求。
【题解】
我们发现如果石头的数量可以仅能被奇数个数字组成,那么先手一定能赢,
如果仅能被偶数组成,那么后手一定能赢,如果既可以被奇数组成又能被偶数组成,
那么两者都有可能赢,现在求必胜布局,所以我们找出只能被奇数个数字组成的状态即可。
【代码】
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int a[100010],n,m;
bool dp[100010][2];
int main(){
while(~scanf("%d%d",&n,&m),n+m){
for(int i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n);
memset(dp,0,sizeof(dp));
dp[a[0]][1]=1;
for(int i=1;i<n;i++){
for(int j=m;j>a[i];j--){
if(dp[j-a[i]][0])dp[j][1]=1;
if(dp[j-a[i]][1])dp[j][0]=1;
}dp[a[i]][1]=1;
}int ans=0;
for(int i=1;i<=m;i++){
if(dp[i][1]&&!dp[i][0])ans++;
}printf("%d\n",ans);
}return 0;
}
POJ 3688 Cheat in the Game(博弈论)的更多相关文章
- 【POJ】2234 Matches Game(博弈论)
http://poj.org/problem?id=2234 博弈论真是博大精深orz 首先我们仔细分析很容易分析出来,当只有一堆的时候,先手必胜:两堆并且相同的时候,先手必败,反之必胜. 根据博弈论 ...
- POJ 2315:Football Game(博弈论)
[题目链接] http://poj.org/problem?id=2315 [题目大意] 两名球员轮流从N个球中挑出不多于M个射门,每个球半径都是R,离球门S. 每次只能踢出L以内的距离.进最后一个球 ...
- POJ 2348 Euclid's Game(博弈论)
[题目链接] http://poj.org/problem?id=2348 [题目大意] 给出两个数,两个参赛者轮流用一个数减去另一个数的倍数,当一个数为0的时候游戏获胜, 求先手是否必胜 [题解] ...
- POJ 2484 A Funny Game(博弈论)
题目链接: 传送门 A Funny Game Time Limit: 1000MS Memory Limit: 10000K Description Alice and Bob decide ...
- hdu 2486/2580 / poj 3922 A simple stone game 博弈论
思路: 这就是K倍动态减法游戏,可以参考曹钦翔从“k倍动态减法游戏”出发探究一类组合游戏问题的论文. 首先k=1的时候,必败态是2^i,因为我们把数二进制分解后,拿掉最后一个1,那么会导致对方永远也取 ...
- POJ2505 A multiplication game 博弈论 找规律
http://poj.org/problem?id=2505 感觉博弈论只有找规律的印象已经在我心中埋下了种子... 题目大意:两个人轮流玩游戏,Stan先手,数字 p从1开始,Stan乘以一个2-9 ...
- POJ.1067 取石子游戏 (博弈论 威佐夫博弈)
POJ.1067 取石子游戏 (博弈论 威佐夫博弈) 题意分析 简单的威佐夫博弈 博弈论快速入门 代码总览 #include <cstdio> #include <cmath> ...
- POJ 2348 Euclid's Game 博弈论
http://poj.org/problem?id=2348 顺便说,必应翻译真的好用,比谷歌翻译好用100倍. 很难判断这道题的具体博弈类型. 有两种写法,一种是找规律,一种是推理得到关系后循环(或 ...
- POJ 博弈论
poj1704 Georgia and Bob 题目链接:http://poj.org/problem?id=1704 题意:如图所示,两个人在玩一个游戏,排成直线的格子上有n个棋子,两人依次将棋子向 ...
随机推荐
- ng4转义html
https://stackoverflow.com/questions/31548311/angular-html-binding <div [innerHTML]="content& ...
- C#中的弱引用(WeakReference)
我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回收对象的.我们能不能同时保持对对象的引用,而又可以让GC需要的时候回收这个对象呢?.NET中提供了WeakReference来实现.弱引用可 ...
- ${pageContext.request.contextPath}的解释以及和request.contextPath的区别
JSP中究竟采用绝对路径还是采用相对路径随着所采用技术的越来越复杂,这个问题也变得越来越难以解决. 1)采用相对路径遇到的问题 l 相对路径固然比较灵活,但如果想复制页面内的代码却变得比较困难,因为不 ...
- 【SPOJ - QTREE2】树链剖分
http://acm.hust.edu.cn/vjudge/problem/19960 题意: 有一棵N个节点的树(1<=N<=10000),N-1条边,边的编号为1~N-1,每条边有一个 ...
- bzoj4602 [Sdoi2016]齿轮
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4602 [题解] 对于每组齿轮(u, v)连边,权值为y/x(反向边x/y) 那么直接dfs计 ...
- bzoj3669: [Noi2014]魔法森林 lct版
先上题目 bzoj3669: [Noi2014]魔法森林 这道题首先每一条边都有一个a,b 我们按a从小到大排序 每次将一条路劲入队 当然这道题权在边上 所以我们将边化为点去连接他的两个端点 当然某两 ...
- DDCTF - evil 一个伪装成docx的exe
0x01 题目描述 题目比较简单,不过这种题感觉比单纯的逆向算法来有意思的多,所以记录一下~ 0x02 脱壳 先拖到IDA瞅一眼,发现加壳了 用PEID查一下是什么壳,但是没有查出来.使用String ...
- Django-Form 补充
一.Form的前端循环 class LoginForm(Form): name = ... pwd = ... def func(request): form = LoginForm() return ...
- Linux内核官方文档atomic_ops.txt【摘自Linux 内核文档】
摘自Linux内核文档 Documentation/atomic_ops.txt,不是本人原创 Semantics and Behavior of Atomic and Bitmask Operati ...
- POJ 1698 Alice's Chance
题目:Alice 要拍电影,每一天只能参与一部电影的拍摄,每一部电影只能在 Wi 周之内的指定的日子拍摄,总共需要花 Di 天时间,求能否拍完所有电影. 典型的二分图多重匹配,这里用了最大流的 din ...