hdu 1079 Calendar Game 博弈
題目就是尋找有無必勝策略
一開始看錯題意了,一直想用dp預處理下,結果發現就是簡單的邏輯判斷。
無論向後一天還是向後一月,均會改變奇偶性,除了4.30,9.30,11.30和非潤年的2.28,在幾個特殊日期中向後可能會改變奇偶性。
目標日期為11.4,偶數。
因此,無特殊日期時奇數必勝
而如果先手是偶數,其必然不會進入特殊日期,因為一旦奇偶改變,必勝變為必輸……
如果先手為奇數,因為不存在必改變奇偶性的日期,所以進入特殊日期後也無法改變奇偶性,保持原狀態……
因此隻有在初始日期為特殊日期,先手才有改變奇偶使自己必勝的機會。
/* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #define INF 1E9 using namespace std; bool leap(int year) { if(year%4==0&&(year%100||year%400==0))return 1; return 0; } int main() { int T=0; scanf("%d",&T); int y,m,d; while(T--) { scanf("%d%d%d",&y,&m,&d); if((m+d)%2==0||(d==30&&(m==11||m==9||m==4))||(d==28&&m==2&&!leap(y)))puts("YES"); else puts("NO"); } }
最後更新:2017-04-03 18:51:50