hdu 4111 Alice and Bob(中档博弈题)
copy VS study
1.每堆部是1的时候,是3的倍数时输否则赢;
2.只有一堆2其他全是1的时候,1的堆数是3的倍数时输否则赢;
3.其他情况下,计算出总和+堆数-1,若为偶数,且1的堆数是偶数,则一定输;
4.不在上述情况下则赢。
#include<stdio.h>
int main()
{
int js=;
int _case,i,n,x;
int flag1,flag2,flag,sum;
scanf("%d",&_case);
while(_case--)
{
js++;
flag1=;
flag2=;
flag=;
sum=;
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%d",&x);
sum+=x;
if(x==)flag1++;
else if(x==)flag2++;
}
if(flag1==n)
{
if(flag1%==)flag=;
}
else if(flag1==n-&&flag2==)
{
if(flag1%==)flag=;
}
else
{
if((sum+n-)%==&&flag1%==)
flag=;
}
printf("Case #%d: ",js);
if(flag)printf("Bob\n");
else printf("Alice\n");
}
return ;
}
转载:
题意:有N堆石头,可以把两堆合成一堆,也可以把一堆去掉一个。
由于总数不变,最终总是要一个个拿完。那么有机会获胜的一方,肯定是先要把所有的合在一起,那么最终就拼奇偶数了。所以双方都要合并。总共就是sigma(ai)+n-1。
而且如果没有某堆只有一个的话,对方是阻挡不住的,没有取完,便被合并了。
所以就要考虑某堆只有一个的情况,单独考虑。
其中的操作包括:
把某堆只有一个的,取走
把两堆只有一个的,合并
把某堆只有一个的,合并给不是一个的
把不是一个的,取走一个
采用记忆化搜索
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define N 10005
#define LL long long
#define inf 1<<29
#define eps 1e-7
using namespace std;
int sg[][];
int get_sg(int i,int j)
{
if(sg[i][j]!=-)
return sg[i][j];
if(j==)
return sg[i][j]=get_sg(i+,);
sg[i][j]=;
//某堆只有一个的取掉
if(i>=&&!get_sg(i-,j))
sg[i][j]=;
//把不是1个的取走一个
else if(j>=&&!get_sg(i,j-))
sg[i][j]=;
//把1个的合并给不是1个的
else if(i>=&&j>&&!get_sg(i-,j+))
sg[i][j]=;
//把两个1个的合并,其中注意,合并是需要一步的
else if(i>=&&((j==&&!get_sg(i-,j+))||(j&&!get_sg(i-,j+))))
sg[i][j]=;
return sg[i][j];
}
int main()
{
int n,t,cas=,k;
scanf("%d",&t);
memset(sg,-,sizeof(sg));
while(t--)
{
scanf("%d",&n);
int one=,sum=;
while(n--)
{
scanf("%d",&k);
if(k==)
one++;
else
sum+=(k+);
}
if(sum)
sum--;
printf("Case #%d: ",++cas);
if(get_sg(one,sum))
puts("Alice");
else
puts("Bob");
}
return ;
}
至此SG函数应该算是了解掌握了;
不过学ACM之初没有好好练习搜索,
以致目前仍然不能熟练的打SG表。Orz
hdu 4111 Alice and Bob(中档博弈题)的更多相关文章
- hdu 4111 Alice and Bob 记忆化搜索 博弈论
Alice and Bob Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 4111 Alice and Bob (博弈+记忆化搜索)
题意:给定 n 堆石头,然后有两种操作,一种是把从任意一堆拿走一个,另一种是把一个石子放到另一堆上. 析:整体看,这个题真是不好做,dp[a][b] 表示有 a 堆1个石子,b个操作,操作是指把其他的 ...
- hdu 4111 Alice and Bob
组合游戏题: 组合游戏的规则: 1.必败态的所有后继都是必胜态: 2.必胜态最少有一个必败的后继: 这里的必胜态是f[1][0][0][0]; 其中f[a][b][c][d]表示有a个1,b个2,c个 ...
- HDU 5708 Alice and Bob (博弈,找规律)
题意: 一个无限大的棋盘,一开始在1,1,有三种移动方式,(x+1,y)(x,y+1) (x+k,y+k)最后走到nm不能走了的人算输.. 析:.我们看成一开始在(n,m),往1,1,走,所以自然可以 ...
- hdu 4111 Alice and Bob 博弈论
这里有2种方法: 方法一:求SG函数 sg[i][j]:i表示1的个数,j表示合并操作的步数. 这共有4种操作: 1.消除一个1: 2.减掉一个1: 3.合并2个1: 4.把1合并到另外不是1中. 代 ...
- Foj 2296 Alice and Bob(博弈、搜索)
Foj 2296 Alice and Bob 题意 两个人博弈,规则如下:轮流取0~9中的数字,最后Alice所得的数字个数为1~n中,数位在Alice所取集合中出现奇数次的. 双方想获得尽量多,问A ...
- Alice and Bob(博弈)
Alice and Bob Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users ...
- hdu 4268 Alice and Bob
Alice and Bob Time Limit : 10000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Tota ...
- hdu 4268 Alice and Bob(multiset|段树)
Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
随机推荐
- 学Lua(上)
学Lua(上) 在很多游戏中,脚本语言是不可或缺的一部分,很多游戏都使用到了Lua,js,python一类的脚本,脚本语言可以在很多方面给开发进程带来帮助.脚本语言可以作为初始化文件读入变量和游戏数据 ...
- SecureCRT的SFTP在Windows与Linux之间传输文件
使用SecureCRT软件ssh连接到Linux虚拟机.然后在SecureCRT上面打开SFTP会话
- Querying mergeinfo requires version 3 of the FSFS filesystem schema
环境: jdk 1.7; svn 3.0.4; TortoiseSVN 1.7.13 Subversion 1.7.10; IntelliJ IDEA 13.1.1;win7 64位系统 之前那个 ...
- ubuntu cron.hourly不运行
服务器没有装NTP,要每天向特定的server进行时间同步,写了一个定时任务,放在/etc/cron.daily下,但是不运行. /etc/crontab文件: # /etc/crontab: sys ...
- 【Permutations II】cpp
题目: Given a collection of numbers that might contain duplicates, return all possible unique permutat ...
- Vim 常用命令 一
今天第一次学习了 Vim编辑器的一些使用 拿出来和大家分享下. 1.首先 列出 常用快捷键 u 表示 撤销上一步 x 表示 删除光标位内容 dd 表示 删除光标所在行内容 >G 表示 光标 ...
- mysql解决错误的方法-MySQL日志
1.使用ps -ef|grep mysql查询是否有与MySQL相关的僵尸进程,如果有则强制杀掉 2.在配置文件my.cnf中配置启动错误日志: log_error = /var/log/mysql/ ...
- vml 在IE8 不显示的问题, Group不能用等问题.
IE8 不显示的问题: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> ...
- Sqli-labs less 28
Less-28 本关考察内容与27关没有太大的差距,我们直接给出一个payload: http://127.0.0.1/sqllib/Less-28/?id=100')union%a0select(1 ...
- 斌哥的 Docker 进阶指南
过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...