zoukankan      html  css  js  c++  java
  • HDU 1079

    题意略。

    思路:dfs记忆化搜索即可。

    #include<bits/stdc++.h>
    using namespace std;
    
    int sg[2005][15][35];
    int month_len[2][20];
    
    bool is_leap(int y){
        return (y % 400 || (y % 4 == 0 && y % 100 != 0));
    }
    int dfs(int y,int m,int d){
        if(sg[y][m][d] != -1) return sg[y][m][d];
        if(y > 2001 || (y == 2001 && m > 11) || 
        (y == 2001 && m == 11 && d > 4)) return 1;
        bool signal = false;
        if(d <= month_len[is_leap(y)][m % 12 + 1]) signal = true;
        int a = 1,b = 1;
        
        int ny1 = y,nm1 = m,nd1 = d,ny2 = y,nm2 = m,nd2 = d;
        if(d < month_len[is_leap(y)][m]) nd1 = d + 1;
        else if(m < 12){
            nm1 += 1;
            nd1 = 1;
        }
        else{
            ny1 += 1;
            nm1 = 1;
            nd1 = 1;
        }
        a = dfs(ny1,nm1,nd1);
        
        if(signal){
            if(m < 12){
                nm2 += 1;
            }
            else{
                ny2 += 1;
                nm2 = 1;
            }
            b = dfs(ny2,nm2,nd2);
        }
        
        return sg[y][m][d] = !(a & b);
    }
    
    int main(){
        month_len[0][1] = month_len[1][1] = 31;
        month_len[0][2] = 28,month_len[1][2] = 29;
        month_len[0][3] = month_len[1][3] = 31;
        month_len[0][4] = month_len[1][4] = 30;
        month_len[0][5] = month_len[1][5] = 31;
        month_len[0][6] = month_len[1][6] = 30;
        month_len[0][7] = month_len[1][7] = 31;
        month_len[0][8] = month_len[1][8] = 31;
        month_len[0][9] = month_len[1][9] = 30;
        month_len[0][10] = month_len[1][10] = 31;
        month_len[0][11] = month_len[1][11] = 30;
        month_len[0][12] = month_len[1][12] = 31;
        memset(sg,-1,sizeof(sg));
        sg[2001][11][4] = 0;
        int T;
        scanf("%d",&T);
        while(T--){
            int y,m,d;
            scanf("%d%d%d",&y,&m,&d);
            int ans = dfs(y,m,d);
            printf("%s
    ",ans ? "YES" : "NO");
        }
        return 0;
    }
  • 相关阅读:
    C函数调用
    C语言的起源
    使用对象流将数据以对象形式进行读写
    使用File类新建一个文本文件
    Windows下架设本机上Subversion服务器
    本地svn版本管理搭建
    ExtJs-第一讲
    找工作经历
    浅谈HashMap的实现原理(转载)
    异常
  • 原文地址:https://www.cnblogs.com/tiberius/p/9350467.html
Copyright © 2011-2022 走看看