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