zoukankan      html  css  js  c++  java
  • 【题解】Luogu P3480 [POI2009] KAM-Pebbles 阶梯Nim

    你得先看懂题。。。好的我知道只有我没看懂

    并不是把所有的数都去完为胜,而是要求每次取完都要满足a[i]≤a[i+1]的条件下,最后一个能取的人胜

    对于

    3
    1 2 4

    比如取2中的一个1

    差分数组就由 1,2 变成了0,3

    是不是相当于把第i项加到了第i+1项上

    这东西有点眼熟,像不像阶梯nim,只是把i-1变成了i+1

    所以我们就成功把这个问题转化为了,反着的阶梯nim游戏

    倒着跑一遍就行了

    code

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 const int mod=1e4;
     5 const int maxn=1e6+10;
     6 namespace gengyf{
     7 inline int read(){
     8     int x=0,f=1;char s=getchar();
     9     while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
    10     while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
    11     return f*x;
    12 }
    13 int n,a[maxn],x[maxn],ans,T;
    14 int main(){
    15     T=read();
    16     while(T--){
    17         n=read();ans=0;
    18         for(int i=1;i<=n;i++){
    19             a[i]=read();
    20             x[i]=a[i]-a[i-1];
    21         }
    22         for(int i=n;i>=1;i-=2){
    23             ans^=x[i];
    24         }
    25         if(ans)puts("TAK");
    26         else puts("NIE");
    27     }
    28     return 0;
    29 }
    30 /*
    31  aggressive 有进取心的
    32  alert 机敏的
    33  alliance 联盟
    34  alter 修改
    35 */
    36 }
    37 signed main(){
    38     gengyf::main();
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/gengyf/p/11761876.html
Copyright © 2011-2022 走看看