Code Forces 276 B. Little Girl and Game 贪心
2013-11-07 19:50
169 查看
给出一个字符串,然后两个人依次进行操作
每次操作可以选择任意一个字符将其去除
如果一个人进行操作之前,他将现有的字符串进行排列之后可以得到一个回文串,那么他将胜利。两个人都会选择自己的最优策略
构成回文的条件很显然是出现奇数次字符的个数为0或者1
如果一个字符x出现了偶数次,那么这个字符对结果没有影响。
因为如果第一个人(可以)选择它,那么第二个人面对的肯定是一个无法胜利的局面,因为第一个人选择x之前应该面对了>=2个出现了奇数次的字符,否则直接胜利。
那么他选择完x,第二个人面对的是>=3个出现了奇数次的字符,一定不会胜利。此时第二个人的最优策略肯定是将不能胜利的局面返回给第一个人,操作时选择任意一个出现了奇数次的字符。然后第一个人将面对一个和选择x之前情况一样的局面(面对>=2哥出现奇数次的字符)。那么第一个选择出现偶数次字符的操作可以忽略掉。
所以任何一个人选择出现偶数次的字符对结果都没有影响。
只考虑出现了奇数次的字符
如果没有出现奇数次的字符,那么第一人直接胜利
如果出现奇数个出现了奇数次的字符那么(无视掉出现偶数次的字符后)每次操作将去除掉一个出现奇数次的字符,如果第一人去掉一个,第二人去掉一个,剩余的一定还是奇数
那么最终面对1个出现奇数次字符的人一定是第一个人。
否则如果出现偶数个出现了奇数次的字符,第一人选择一个之后变成了第二个人面对 出现奇数个出现了奇数次的字符,
那么最终面对1个出现奇数次字符的人一定是第二个人。
每次操作可以选择任意一个字符将其去除
如果一个人进行操作之前,他将现有的字符串进行排列之后可以得到一个回文串,那么他将胜利。两个人都会选择自己的最优策略
构成回文的条件很显然是出现奇数次字符的个数为0或者1
如果一个字符x出现了偶数次,那么这个字符对结果没有影响。
因为如果第一个人(可以)选择它,那么第二个人面对的肯定是一个无法胜利的局面,因为第一个人选择x之前应该面对了>=2个出现了奇数次的字符,否则直接胜利。
那么他选择完x,第二个人面对的是>=3个出现了奇数次的字符,一定不会胜利。此时第二个人的最优策略肯定是将不能胜利的局面返回给第一个人,操作时选择任意一个出现了奇数次的字符。然后第一个人将面对一个和选择x之前情况一样的局面(面对>=2哥出现奇数次的字符)。那么第一个选择出现偶数次字符的操作可以忽略掉。
所以任何一个人选择出现偶数次的字符对结果都没有影响。
只考虑出现了奇数次的字符
如果没有出现奇数次的字符,那么第一人直接胜利
如果出现奇数个出现了奇数次的字符那么(无视掉出现偶数次的字符后)每次操作将去除掉一个出现奇数次的字符,如果第一人去掉一个,第二人去掉一个,剩余的一定还是奇数
那么最终面对1个出现奇数次字符的人一定是第一个人。
否则如果出现偶数个出现了奇数次的字符,第一人选择一个之后变成了第二个人面对 出现奇数个出现了奇数次的字符,
那么最终面对1个出现奇数次字符的人一定是第二个人。
#include<stdio.h> #include<string.h> int num[261]; int main(){ char str[11111]; while(scanf("%s",&str)!=EOF){ memset(num,0,sizeof(num)); for(int i=0;str[i];i++){ num[str[i]-'a']++; } int sum=0; for(int i=0;i<=26;i++){ sum+=num[i]%2; } if(sum&1||sum==0)printf("First\n"); else printf("Second\n"); } return 0; }
相关文章推荐
- uva10596 - Morning Walk
- matlab 画不同图案的柱状图
- core--线程同步
- CentOs6下删除物理磁盘,删除创建LVM
- 括号匹配问题
- linux-android搭建
- 专为iPhone开发者准备的50款经典开源应用
- Javascript编程风格
- 直方图均衡
- 如何退出while(cin>>value)的循环
- War-ftpd USER longString漏洞攻击之Java实现常见问题
- MES系统
- POJ 1469 COURSES (二分匹配) - from lanshui_Yang
- ViewPageIndicator中引入supportV4包时错误Error inflating class android.support.v4.view.ViewPager
- Javascript_1_语法
- Microsoft incremental linker已停止工作解决方法
- 我对VC维的理解
- C++中指针和引用的区别(转自:http://www.cnblogs.com/kingln/archive/2008/03/29/1129118.html)
- 求四个数的最大公约数
- 项目工期和成本预测-挣值技术