閱讀786 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 12個有趣的C語言問答
  下一篇:go 利用iOS API編寫簡單微博客戶端全過程