本文主要是介绍hdu 1850 - Being a Good Boy in Spring Festival(简单博弈),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路:
尼姆博弈的变形, 对于每个堆都遍历一下,若起始状态已是T态,则ans = 0; 否则,就枚举第一步需要变动的堆i,求其他n-1个数a[]的异或值temp,
如果temp<a[i],则ans加一,否则就不加,代表这一堆目前无法处理。
代码如下:
const int M = 105;
int a[M];
int main()
{int n;while(~scanf("%d", &n) && n) {for(int i = 1; i <= n; ++i)scanf("%d", &a[i]);int ans = 0, pre = 0, cur = 0;for(int i = 1; i <= n; ++i) {cur = pre;for(int j = i+1; j <= n; ++j)cur ^= a[j];pre ^= a[i];ans += (cur<a[i]);}printf("%d\n", ans);}return 0;
}
这篇关于hdu 1850 - Being a Good Boy in Spring Festival(简单博弈)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!