zoukankan      html  css  js  c++  java
  • POJ 1740

    这题,通过多次试验,可以发现,当只存在两堆(以下称对)相等的石子时,先手必输。更进一步,当N对这样的石子存在时,先手必输。

    于是,若1要赢,一种方法是,把石子都变成相等的对。

    考虑石子中无对的情况,若存在对,我们把那些对忽略,因为先手对于这些对是必输的。

    当N为奇数时,随机考虑这样的情况(有序)a<b<c<d<e。可知,先手必定能把这些石子变成对。因为e>=(b-a)+(d-c),只需从e中取走若干后把剩余的分配即可。

    当N为偶数时,考虑a<b<c<d<e<f。先手同样必胜,因为(f-a)>=(c-b)+(e-d)。

    于是,当初始均为对时,先手输,否则先手胜。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 const int N=105;
     7 int co[N];
     8 int n;
     9 
    10 int main(){
    11     int tmp;
    12     while(scanf("%d",&n)!=EOF){
    13         if(n==0) break;
    14         memset(co,0,sizeof(co));
    15         for(int i=1;i<=n;i++){
    16             scanf("%d",&tmp);
    17             co[tmp]=(co[tmp]+1)%2;
    18         }
    19         int ans=0;
    20         for(int i=1;i<=100;i++){
    21             if(co[i])
    22             ans++;
    23         }
    24         if(ans) printf("1
    ");
    25         else printf("0
    ");
    26     }
    27     return 0;
    28 }
    View Code
  • 相关阅读:
    [NOIP模拟赛][贪心]奶牛晒衣服.
    BZOJ3750: [POI2015]Piecz
    BZOJ2348 [Baltic 2011]Plagiarism
    高精度乘法【高乘高
    codevs 1215 迷宫
    变量交换
    a+b问题与圆柱体表面积的计算
    算数表达式的练习
    [bzoj1070][SCOI2007]修车[ 网络流]
    [bzoj2502]清理雪道[上下界网络流]
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3789949.html
Copyright © 2011-2022 走看看