• poj1082


    题意:从某年某月某天开始两个人轮流开始将日期推进,推进方法有两种,1.推进到第二天 2.推进到下个月的这一天。谁到达2001.11.4谁赢,谁超过了谁输。

    分析:np问题,我们设月号加日号等于d,对于第二种推进方式,会改变d的奇偶性。(因为月的奇偶变了,日的奇偶没变,和的奇偶就变了)。对于第一种推进方式,如果推进后还在同一个月份,那么会改变d的奇偶性。(因为月的奇偶没变,日的变了,和的奇偶就变了)。第一种推进方式,跨月份的时候,有些会改变,有些不会改变。有31天、29天的月份会变,30天、28天的不会变,其中对于d为偶的情况(2月28,4、6月30)可以利用第二中方式变为奇。

    由此可见对于绝大部分情况来说d的奇偶是轮流出现的,最终必败态是11月4日奇态。所有的偶态均可到达奇态,对于d为奇的9、11月30也可以到达奇态。其余奇态只能到达偶态。如果把偶态和9.30和11.30划入集合A,其余划入集合B,那么对于A的所有元素均有办法到达集合B。而B中元素只能到达集合A,无法到达集合B。且11.4属于B。所以,A中元素为必胜,B中为必败。(还需仔细考虑快到2001.11.4的那些日子,幸好也没有出现任何意外)

    总结起来就是除了9、11月30之外,按d的奇偶性可以分为n和p状态。

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    usingnamespace std;

    int main()
    {
    //freopen("t.txt", "r", stdin);
    int t;
    scanf(
    "%d", &t);
    while (t--)
    {
    int m, y, d;
    scanf(
    "%d%d%d", &y, &m, &d);
    if ((m ==11|| m ==9)&& d ==30)
    {
    printf(
    "YES\n");
    continue;
    }
    if ((m &1) ^ (d &1))
    {
    printf(
    "NO\n");
    continue;
    }
    printf(
    "YES\n");
    }
    return0;
    }
  • 相关阅读:
    了解大数据的特点、来源与数据呈现方式
    结对项目-四则运算 “软件”之升级版
    个人项目-小学四则运算 “软件”之初版
    大数据应用期末作业
    分布式文件系统HDFS 练习
    安装Hadoop
    爬虫大作业
    爬取全部的校园新闻
    理解爬虫原理
    中文词频统计与词云生成
  • 原文地址:https://www.cnblogs.com/rainydays/p/2101821.html
Copyright © 2020-2023  润新知