HDU 3951 (博弈) Coin Game
生活随笔
收集整理的這篇文章主要介紹了
HDU 3951 (博弈) Coin Game
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先考慮兩種簡單的情況:
- 如果先手能一次把硬幣拿完,即 k >= n ,那么先手勝
- 如果每次只能拿一個硬幣, 即 k = 1 ,那么如果有奇數個硬幣先手勝,如果有偶數個硬幣后手勝。
剩下的情況就是先手一次拿不完,而且每次可以拿一個或者拿兩個硬幣。
剩下的硬幣會變成一條鏈,如果后手能拿完最好,不能拿完的話就拿一個或兩個硬幣使這條鏈變成長度相等的兩條。
這一定是能做到的,
因為如果這條鏈有奇數個硬幣,那么拿走中間的那個;
如果有偶數個硬幣,拿走中間的兩個。
變成相等的兩條鏈之后,先手在哪條鏈拿走多少個硬幣,后手就在另外一條鏈中拿走同樣的硬幣,直到拿完所有的硬幣。
因此后手必勝。
1 #include <cstdio> 2 3 int main() 4 { 5 //freopen("in.txt", "r", stdin); 6 7 int T; scanf("%d", &T); 8 for(int kase = 1; kase <= T; kase++) 9 { 10 int n, k; 11 scanf("%d%d", &n, &k); 12 printf("Case %d: ", kase); 13 bool first; 14 if(k == 1) first = n & 1 ? true : false; 15 else if(k >= n) first = true; 16 else first = false; 17 printf("%s\n", first ? "first" : "second"); 18 } 19 20 return 0; 21 } 代碼君?
轉載于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4462937.html
總結
以上是生活随笔為你收集整理的HDU 3951 (博弈) Coin Game的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elipse+pydev+python开
- 下一篇: Linux系统isosize指令用法