hdu 3951 - Coin Game(找规律)
这道题是有规律的博弈题目,,,
所以我们只需要找出规律来就ok了
牛人用sg函数暴力找规律,菜鸟手工模拟以求规律。。。【牢骚】
if(m>=2)
{
if(n<=m) {first第一口就可以吃掉所有的。所以first必赢,}
else {first无法一口吃掉所有的,所以second成了主动的了,如果first第一口吃掉k1个,那么明智的second只要吃掉k2个就可以了(n-k1-k2是偶数,也包括 0的),使得 剩下的数字是分成两个数字数目相等的堆,以后的工作便是first做什么,那么second就另一个堆上做什么(包括分堆操作)}
}
代码如下:
#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <string> #include <cmath> #include <queue> #include <stack> #include <vector> #include <map> #define LL long long #define eps 1e-8 #define N 15 #define K 15 using namespace std; int main () { int t, k = 0; scanf("%d", &t); while(t--) { int n, m; scanf("%d%d",&n, &m); printf("Case %d: ",++k); if(m==1) { if(n&1) puts("first"); else puts("second"); continue; } if(n<=m) puts("first"); else puts("second"); } return 0; }