hdu 1730 Nim博弈
阿新 • • 發佈:2018-06-02
.cn 如果 class problem 異或 TE div 似的 scanf
題目來源:http://acm.hdu.edu.cn/showproblem.php?pid=1730
Nim博弈為:n堆石子,每個人可以在任意一堆中取任意數量的石子
n個數異或值為0就後手贏,否則先手贏
將這題轉化成Nim遊戲
可以在任意一行中移動任意距離,可以向左或右,但是仔細觀察發現,其實只能接近對方棋子,如果你遠離對方棋子,對方可以接近你相同距離
和nim相似的是,不能不移,所以兩個棋子的距離差就是SG值
#include<cstdio> #include<iostream> #include<cmath> using namespace std; int main() { int n,m; while(cin>>n>>m) { int ans=0; for(int i=1;i<=n;i++) { int a,b; scanf("%d %d",&a,&b); ans^=int(abs(a-b)-1); } if(ans==0)cout<<"BAD LUCK!"<<endl; else cout<<"I WIN!"<<endl; } return 0; }
hdu 1730 Nim博弈