博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1740
阅读量:4316 次
发布时间:2019-06-06

本文共 959 字,大约阅读时间需要 3 分钟。

这题,通过多次试验,可以发现,当只存在两堆(以下称对)相等的石子时,先手必输。更进一步,当N对这样的石子存在时,先手必输。

于是,若1要赢,一种方法是,把石子都变成相等的对。

考虑石子中无对的情况,若存在对,我们把那些对忽略,因为先手对于这些对是必输的。

当N为奇数时,随机考虑这样的情况(有序)a<b<c<d<e。可知,先手必定能把这些石子变成对。因为e>=(b-a)+(d-c),只需从e中取走若干后把剩余的分配即可。

当N为偶数时,考虑a<b<c<d<e<f。先手同样必胜,因为(f-a)>=(c-b)+(e-d)。

于是,当初始均为对时,先手输,否则先手胜。

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 const int N=105; 7 int co[N]; 8 int n; 9 10 int main(){11 int tmp;12 while(scanf("%d",&n)!=EOF){13 if(n==0) break;14 memset(co,0,sizeof(co));15 for(int i=1;i<=n;i++){16 scanf("%d",&tmp);17 co[tmp]=(co[tmp]+1)%2;18 }19 int ans=0;20 for(int i=1;i<=100;i++){21 if(co[i])22 ans++;23 }24 if(ans) printf("1\n");25 else printf("0\n");26 }27 return 0;28 }
View Code

 

转载于:https://www.cnblogs.com/jie-dcai/p/3789949.html

你可能感兴趣的文章
ATMEGA16 IOport相关汇总
查看>>
JAVA基础-多线程
查看>>
面试题5:字符串替换空格
查看>>
[Codevs] 线段树练习5
查看>>
Amazon
查看>>
component-based scene model
查看>>
Echart输出图形
查看>>
hMailServer搭建简单邮件系统
查看>>
从零开始学习jQuery
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
查看>>
opacity半透明兼容ie8。。。。ie8半透明
查看>>
CDOJ_24 八球胜负
查看>>
Alpha 冲刺 (7/10)
查看>>
一款jQuery打造的具有多功能切换的幻灯片特效
查看>>
SNMP从入门到开发:进阶篇
查看>>
@ServletComponentScan ,@ComponentScan,@Configuration 解析
查看>>
unity3d 射弹基础案例代码分析
查看>>
thinksns 分页数据
查看>>
os模块
查看>>
LINQ to SQL vs. NHibernate
查看>>