zoukankan      html  css  js  c++  java
  • AtCoder Grand Contest 011D(思维,规律,异或)

    #include<bits/stdc++.h>
    using namespace std;
    char s[200007];
    int ans[200007];
    int main(){
        int n,k;
        int i=0,j=0,l=0;
        scanf("%d%d",&n,&k);
        scanf("%s",s+1);
        for(i=1;i<=n;i++)
            if(s[i]=='A')
                ans[i]=1;
        int tmp=0;
        for(i=1,j=1;i<=k&&j<=n;i++){
            if(ans[j]^tmp){//如果这一位经历异或之后变为了1需要再变一次把它变成0,因为这一位终将变成相当于这一步的开头第一位
                ans[j]^=1;//将它变成0
                continue;
            }
            tmp^=1;//变化异或标记
            j++;//进入下一位
        }
        if(i>=k+1){//k太小以至于前面还有剩余没有变为最终形态
            for(l=j;l<=n;l++)
                if(ans[l]^tmp)//后面的位数根据奇偶性进行变化
                    printf("A");
                else
                    printf("B");
            for(l=n+1;l<=n+j-1;l++)//最后面是找出的规律
                if((n+j-l)&1)
                    printf("A");
                else
                    printf("B");
        }
        else{
            if(n&1){//奇数则判断开头剩余是规律
                if((k-i+2)&1)
                    printf("A");
                else
                    printf("B");
                for(l=2;l<=n;l++)
                    if(l&1)
                        printf("A");
                    else
                        printf("B");
            }
            else
                for(l=1;l<=n;l++)
                    if((l+1)&1)
                        printf("A");
                    else
                        printf("B");
        }
        return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    [SDOI 2009] HH去散步
    [SDOI 2017] 新生舞会
    【期望 数学】7.6神经衰弱
    初涉2-SAT
    【tarjan 拓扑排序 dp】bzoj1093: [ZJOI2007]最大半连通子图
    【贪心】bzoj1572: [Usaco2009 Open]工作安排Job
    【贪心优化dp决策】bzoj1571: [Usaco2009 Open]滑雪课Ski
    概述「并查集补集转化」模型&&luoguP1330 封锁阳光大学
    初涉tarjan缩点
    初涉三元环
  • 原文地址:https://www.cnblogs.com/ldudxy/p/10459551.html
Copyright © 2011-2022 走看看