【博弈】HDU 1079 Calendar Game
传送门
题意是说,给定一个日期,每个人可以轮流操作,要么将日期+1变为下一天,要么将日期变为下个月的同一天。
当下个月没有同一天的时候,只能讲日期变为下一天。
谁把日期变为2001.11.4即胜利。
是用sg函数做的。
当局面的sg=1的时候必胜。
//#pragma GCC optimize(3)
#include<bits/stdc++.h>
using namespace std;
int gap[2020];
int ms[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int sg[2010][13][33];
bool check(int y, int m, int d)
{
if(y > 2001) return 0;
else if(y == 2001 && m > 11) return 0;
else if(y == 2001 && m==11 && d > 4) return 0;
return 1;
}
int getsg(int y, int m, int d)
{
//cerr << y << ":" << m << ":" << d <<
… Read the rest