zoukankan      html  css  js  c++  java
  • Luogu2114 [NOI2014]起床困难综合症 【位运算】

    题目分析:

    按位处理即可

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int maxn = 105000;
     5 
     6 int n,m;
     7 int a[maxn],b[maxn];
     8 
     9 void work(){
    10     int z = 0;
    11     for(int i=29;i>=0;i--){
    12     if((1<<i)+z > m)continue;
    13     int l = (1<<i),r=0;
    14     for(int i=1;i<=n;i++){
    15         if(a[i] == 0) l = (l&b[i]),r = (r&b[i]);
    16         else if(a[i] == 1) l = (l|b[i]),r = (r|b[i]);
    17         else l = (l^b[i]),r = (r^b[i]);
    18     }
    19     if((r&(1<<i)) != 0) continue;
    20     if((l&(1<<i)) == 0) continue;
    21     z += (1<<i);
    22     }
    23     for(int i=1;i<=n;i++){
    24     if(a[i] == 0) z = (z&b[i]);
    25     else if(a[i] == 1) z=  (z|b[i]);
    26     else z = (z^b[i]);
    27     }
    28     printf("%d
    ",z);
    29 }
    30 
    31 int main(){
    32     scanf("%d%d",&n,&m);
    33     for(int i=1;i<=n;i++){
    34     char ch = getchar();
    35     while(ch > 'Z' || ch < 'A') ch = getchar();
    36     if(ch == 'A'){a[i] = 0;}
    37     else if(ch == 'O'){a[i] = 1;}
    38     else a[i] = 2;
    39     while(ch  != ' ') ch = getchar();
    40     scanf("%d",&b[i]);
    41     }
    42     work();
    43     return 0;
    44 }
  • 相关阅读:
    java final计算
    浅析Java中的final关键字
    easyui
    Java:类与继承
    java中&和&&
    XML
    JSON
    SQL
    selenium
    Metasploit
  • 原文地址:https://www.cnblogs.com/Menhera/p/10799367.html
Copyright © 2011-2022 走看看