您的位置:首页 > 其它

[博弈] hdu 4371 alice and bob

2012-08-17 12:23 471 查看
/**

[博弈] hdu 4371 alice and bob
解题报告 from http://page.renren.com/601081183/note/866168965?null&ref=minifeed&sfet=2011&fin=1&ff_id=313179017&feed=page_reblog&tagid=1982941531&statID=page_601081183_2&level=3 结论:在所有的d中,选择最小的d,这里记作dmin,
Alice和Bob每次都选择+dmin(写下的数是在原来的那个数上加上dmin),
按照这样的策略最后的结果就是全局的结果。

可以这样考虑正确性,
不妨假设按照以上策略是Alice获胜,那么Alice并不会主动改变策略;
假设Bob在某一步突然改变策略,即没有选择+dmin,
那么就必然选择了某个+d(不会是-d,因为这样肯定不合法),且d > dmin,
那么下一步Alice就可以选择-dmin了,再下一步,Bob就只能选择某个+d,且d > dmin,
Alice则可以一如既往的选择-dmin,
如此循环,无论每次Bob做什么样的决策,Alice都可以选择-dmin,
所以肯定是Bob最先没有选择,同样是Alice获胜。这样就证明了开头的结论。
*/
#include <stdio.h>
#define MIN(a,b) ((a) < (b)? (a):(b) )
int main()
{
int n,m,d,s,t,cas = 0;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
d = 1000000;
while(m--)
{
scanf("%d",&s);
d = MIN(d,s);
}
printf(n / d % 2 == 0 ? "Case #%d: Alice\n" : "Case #%d: Bob\n",++cas);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: