zoukankan      html  css  js  c++  java
  • 【洛谷1288】取数游戏II

    原题:

    题目中有两个需要注意的地方

    一个是每次移动可以减少任意多数,另一个是保证至少有一个0

    这两个我一开始都没看见,结果居然还想出一个结论 = =

    长年读题苦手,wtcl T_T

    既然保证至少有一个0,那么可以考虑一个极端的先手必胜的情况

    那就是存在一个方向,使得沿这个方向走奇数条边能碰到一个0边

    那么先手每次把这个方向上的边清掉,后手就莫得选

    不管后手是否把下一条边拿完,只要先手继续推着往前走,他就没有机会再去管那条边

    那么如果先手两边有一种方向长度为奇数,他就必胜

    如果两边都是偶数,那么不管往哪里走,后手就出现了一条奇数路径,后手必胜

    所以判一下起点两个方向的路径奇偶性即可

    那么问题来了

    每次移动只能减少1,不保证有0的时候该怎么做呢

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int n,a[110];
     5 int main(){
     6     cin>>n;
     7     for(int i=1;i<=n;++i)  scanf("%d",&a[i]);
     8     int mk1=0,mk2=0;
     9     for(mk1=1;mk1<=n && a[mk1]!=0;++mk1);
    10     for(mk2=n;mk2>=1 && a[mk2]!=0;--mk2);
    11     cout<<((mk1-1)%2==1 || (n-mk2)%2==1 ? "YES" : "NO")<<endl;
    12     return 0;
    13 }
    View Code
  • 相关阅读:
    uva 10129 play on words——yhx
    uva 10305 ordering tasks(超级烂题)——yhx
    uva 816 abbott's revenge ——yhx
    php 格式化数字 位数不足前面加0补足
    NetBeans-xdebug的安装
    php 文件file常用的操作
    pg 匹配中文字符
    隐藏 php apache 的版本号
    php redis扩展
    php 二维数组的排序
  • 原文地址:https://www.cnblogs.com/cdcq/p/12691845.html
Copyright © 2011-2022 走看看