ZOJ3067_Nim
2013-10-17 21:47
99 查看
题目的意思就不说了,典型的取石子的博弈问题。
题目的前半部分就是赤果果的SG函数值异或就可以了,其中Sg函数值就是石子数本身。
但是接下来有个小变换,就是要你输出先手必胜有多少种不同的取法。
首先要想保持必胜,必须要取完以后保证所有的石子数异或值为0.
这样,假设我们来判断某一堆是否可取的时候,我们可以用总的异或值来与当前堆石子数异或一下,就得出当前堆应该剩下多少石子哦(仔细理解这里就好了)
下面可以贴代码了:
题目的前半部分就是赤果果的SG函数值异或就可以了,其中Sg函数值就是石子数本身。
但是接下来有个小变换,就是要你输出先手必胜有多少种不同的取法。
首先要想保持必胜,必须要取完以后保证所有的石子数异或值为0.
这样,假设我们来判断某一堆是否可取的时候,我们可以用总的异或值来与当前堆石子数异或一下,就得出当前堆应该剩下多少石子哦(仔细理解这里就好了)
下面可以贴代码了:
#include <iostream> #include <cstdio> using namespace std; int a[1005],n,m,ans; int main() { while (scanf("%d",&n) && n) { ans=m=0; for (int i=1; i<=n; i++) scanf("%d",&a[i]),m^=a[i]; if (m==0) { printf("0\n"); continue; } for (int i=1; i<=n; i++) if ((a[i]^m)<a[i]) ans++;//一开始的时候我的判断条件是<=,居然也对了,诶数据略水,这里必须是严格的小于。 printf("%d\n",ans); } return 0; }
相关文章推荐
- ZOJ3067 POJ2975 Nim,经典NIM游戏
- POJ2975 & ZOJ3067 Nim [基础Nim博弈]输出方法
- POJ2975&&ZOJ3067----Nim
- NIM:一排石头的游戏
- 【HDU1536】S-Nim (博弈,SG函数)
- HDU_1536 S-Nim(sg函数)
- poj 2960 S-Nim(sg函数)
- Nim-sum原理及应用
- HDOJ 3032 Nim or not Nim? (博弈 :SG)
- NIM(2)“拈”游戏分析扩展问题
- [CQOI2013]新Nim游戏
- Nim游戏博弈(收集完全版)
- Zoj 3529 A Game Between Alice and Bob 数论+博弈Nim 快速求数中有多少个素数因子
- POJ 1704 Georgia and Bob (Nim游戏变形)
- ZOJ3084_S-Nim
- HDU2509:Be the Winner(Nim)
- 博弈之Nim游戏和sg函数
- NIM博弈的必胜取法
- POJ 2975 Nim(尼姆博弈的变形)
- poj_Nim_2068