题目链接在这里:F-小牛再战_牛客竞赛博弈专题班组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏习题 (nowcoder.com)
这是比较经典的巴什博奕问题,在博弈论中想到的第一个操作就是能不能出现双方决策时对称的的局面,在前前篇练习回文串填1中已经体现出来,这是博弈论比较经典的想法,对应到这道题就是如果总堆数是偶数,并且相同个数的堆数也是偶数的时候,后手就能采取跟先手完全一样的策略,所以后手胜。
1 #include "bits/stdc++.h" 2 using namespace std; 3 const int MAX=15; 4 int t,n,cnt; 5 int a[MAX]; 6 int main(){ 7 int i,j; 8 while (scanf("%d",&n),n!=0){ 9 for (i=1;i<=n;i++) 10 scanf("%d",a+i); 11 sort(a+1,a+n+1); 12 cnt=1; 13 for (i=2;i<=n;i++){ 14 if (a[i]!=a[i-1]){ 15 if (cnt%2!=0){ 16 cout<<"Win"<<endl; 17 goto away; 18 } 19 cnt=1; 20 } 21 else cnt++; 22 } 23 cout<<"Lose"<<endl; 24 away:; 25 } 26 return 0; 27 }
未来是什么样,未来会发生什么,谁也不知道。
但是我知道,
起码从今天开始努力,
肯定比从明天开始努力,
要快一天实现梦想。
千里之行,始于足下! ——《那年那兔那些事儿》