dreamangel
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
14 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
ACM(9)
(rss)
Photoshop(2)
(rss)
游戏编程(2)
(rss)
随笔档案
2011年12月 (1)
2010年10月 (1)
2010年9月 (2)
2010年6月 (1)
2010年4月 (1)
2010年1月 (2)
2009年12月 (2)
2009年11月 (3)
2009年10月 (1)
搜索
最新评论
阅读排行榜
1. vc中创建控件数组(完整版)(2420)
2. 64位整数全解(1301)
3. Win32游戏编程 1(710)
4. fjnu 1925 Factstone Benchmark(517)
5. abcd*e=fghi(498)
评论排行榜
1. 64位整数全解(0)
2. fjnu 1872 Function Run Fun(0)
3. Contest - 2009低年级学生程序设计大赛解题报告(0)
4. PS水晶边框制作(0)
5. FJNU2009系列赛二总结(0)
poj 1740 A New Stone Game
http://acm.pku.edu.cn/JudgeOnline/problem?id=1740
题目大意:有N堆石头,每堆石头数目在1到100之间,最多有10堆,两人分别取走石头。取石头的规则是:每次只能从1堆中取,每次取走至少1个,取过后还可以把这堆的石头任意分配到其它堆上(这些堆必须有石头),当然也可以不分配。问给定这些石头堆的情况,两人轮流取,谁先取完谁胜利,问是先取的胜利还是后取的胜利,求双方最优策略?
首先讨论石头堆两堆两堆相等的情况,例如x、x、y、y、z、z.6堆的情况。在这种情况下先取的必输,很简单,先取的那人怎么取后取的那人就怎么取(如果对方把石头分配到一堆上,你就分配到与之对应的堆上),总之保持这个相等的均势不变,这样到最后,后取的人就将取走最后一堆石头。
知道这个结论后,就可以把N堆中两两相等的堆去掉,来讨论互不相等的堆来。
(1)只有一堆x,第一个人直接全部取走就胜利了。(显然x、y、y的情况也是第一人胜,所以忽略相等的石头);
(2)x、y的形式(这里不妨假设递增,下同)。第一人从第二堆中取走(y-x)个石头,这样两堆相等,最终还是第一人胜;
(3)x、y、z的形式。第一人从最后一堆中取走(z+x-y)个石头,再将(y-x)个石头移到第一堆上(z>y-x一定成立),这样还是第一人胜。
依此类推,移动个数最多的石头堆然后再分配总可以前面变成两两相等的情况。可见只要开始不全是两两相等,那先取者必胜。
#include
<
iostream
>
using
namespace
std;
int
main()
{
int
n,i,j,flag;
while
(cin
>>
n
&&
n)
{
int
a[
100
];
flag
=
0
;
for
(i
=
0
;i
<
n;i
++
)
cin
>>
a[i];
if
(n
%
2
)
flag
=
1
;
else
{
for
(i
=
0
;i
<
n
&&
!
flag;i
++
)
{
for
(j
=
i
+
1
;j
<
n;j
++
)
{
if
(a[i]
==
a[j])
{
a[i]
=
a[j]
=
0
;
break
;
}
}
if
(a[i])
flag
=
1
;
}
}
if
(flag)
cout
<<
"
1
"
<<
endl;
else
cout
<<
"
0
"
<<
endl;
}
return
0
;
}
posted on 2010-09-05 20:50
飞翔天使
阅读(353)
评论(0)
编辑
收藏
引用
所属分类:
ACM
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
poj 1740 A New Stone Game
foj 1534 阿甘的珠宝
abcd*e=fghi
福建师范大学第七届程序设计竞赛(专业组)解题报告
fjnu 1925 Factstone Benchmark
FJNU2009系列赛二总结
Contest - 2009低年级学生程序设计大赛解题报告
fjnu 1872 Function Run Fun
64位整数全解
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 飞翔天使