码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷P2114起床困难综合征

时间:2016-08-12 00:44:25      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

从高位到低位按位枚举,贪心。如果该位填1比填0结果优且填1不会超出m限制,那就填1,否则填0

 

 1 /*by SilverN*/
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 using namespace std;
 7 const int mxn=100020;
 8 int n,m;
 9 int p[35];
10 int op[mxn],a[mxn];
11 int ans=0;
12 int pro(int x){
13     for(int i=1;i<=n;i++){
14         if(op[i]==1)x=x&a[i];
15         else if(op[i]==2)x=x|a[i];
16          else x=x^a[i];
17     }
18     return x;
19 }
20 int main(){
21     scanf("%d%d",&n,&m);
22     int i,j;
23     char c[5];
24     for(i=1;i<=n;i++){
25         scanf("%s%d",c,&a[i]);
26         if(c[0]==A)op[i]=1;
27         else if(c[0]==O)op[i]=2;
28          else op[i]=3;
29     }
30     for(i=0;i<=30;i++) p[i]=1<<i;
31     for(i=30;i>=0;i--){
32         if(ans+(1<<i) > m)continue;//只能填0
33         if( pro(1<<i) > pro(0) )ans+=(1<<i);
34     }
35     printf("%d\n",pro(ans));
36     return 0;
37 }

 

洛谷P2114起床困难综合征

标签:

原文地址:http://www.cnblogs.com/SilverNebula/p/5763089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!