博弈题集(1)
题目:看到 这里 的一个分类,打算分四次把它搞定吧,现在看第一部分的题:
//HDOJ1079 Calendar Game
具体情况具体分析就好,这题数据蛮弱,之前写错了也过了。
#include <cstring>#include <cmath>#include <cstdio>#include <algorithm>#include <iostream>#include <vector>#include <map>using namespace std;int a[1010];int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF) { int ans=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } if(k==1) { printf("Alice\n"); continue; } if(n&1) { ans^=a[1]-(k==2); for(int i=2;i<n;i+=2) ans^=(a[i+1]-a[i]-1); } else { for(int i=1;i<=n;i+=2) ans^=(a[i+1]-a[i]-1); } if(ans) printf("Alice\n"); else printf("Bob\n"); } return 0;}最后两道没来及学新知识,周末过了稍微闲点的时候再补上。
HDOJ1538 A Puzzle for Pirates [海盗分金问题]
HDOJ3404 Switch lights [Nim积]