zoukankan      html  css  js  c++  java
  • [NOI2014] 起床困难综合症

    水题的题解也水......

    原题链接:洛谷 P2114 [NOI2014]起床困难综合症

    位运算每一位之间互不干扰。

    经过所有门之后每一位不外乎四种结果:一定是0,一定是1,不变或取反。

    按位枚举,贪心即可。

    对于不变的,我们在限制之内尽可能选更多的1。

    其余三种都选0。

    代码略显繁杂。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 int n,m;
     7 int op[100005];
     8 int b[100005];
     9 int res[35];
    10 int fin[35];
    11 int ans;
    12 
    13 int main()
    14 {
    15     scanf("%d%d",&n,&m);
    16     char tp[10];
    17     for(int i=1;i<=n;i++)
    18     {
    19         scanf("%s",tp+1);
    20         scanf("%d",&b[i]);
    21         if(tp[1]=='A')op[i]=1;
    22         if(tp[1]=='O')op[i]=2;
    23         if(tp[1]=='X')op[i]=3;
    24     }
    25     for(int i=0;i<=30;i++)
    26     {
    27         for(int j=n;j;j--)
    28         {
    29             int nw=((b[j]>>i)&1);
    30             if(op[j]==1)
    31             {
    32                 if(nw==0){res[i]+=2;break;}
    33                 if(nw==1)continue;
    34             }
    35             if(op[j]==2)
    36             {
    37                 if(nw==0)continue;
    38                 if(nw==1){res[i]=res[i]?2:3;break;}
    39             }
    40             if(op[j]==3)
    41             {
    42                 if(nw==0)continue;
    43                 if(nw==1)res[i]=(res[i]^1);
    44             }
    45         }
    46     }
    47     int fl=0;
    48     for(int i=30;i>=0;i--)
    49     {
    50         int gl=((m>>i)&1);
    51         int nw=(res[i]==0);
    52         if(fl)fin[i]=nw;
    53         if(gl==1&&nw==1)fin[i]=1;
    54         if(gl==1&&nw==0)fl=1;
    55     }
    56     for(int i=0;i<=30;i++)
    57     {
    58         if(fin[i])ans=ans|(1<<i);
    59         if(res[i]%2)ans=ans|(1<<i);
    60     }
    61     printf("%d",ans);
    62     return 0;
    63 }
    complete code

  • 相关阅读:
    设置cookie,读取cookie案例
    npm常用命令及版本号浅析
    nrm安装与使用
    ES6解构赋值
    nodemon 基本配置与使用
    nodejs开发辅助工具nodemon
    Node自动重启工具 nodemon
    深入浅出Object.defineProperty()
    js原生缓慢返回顶部函数封装
    The linux command 之权限
  • 原文地址:https://www.cnblogs.com/cervusy/p/9475712.html
Copyright © 2011-2022 走看看