[NOI2014]起床困难综合症
起床困难综合症
https://ac.nowcoder.com/acm/problem/17857
这道题就是按位贪心 关键在于三点:
1.设置两个初始变量,全1 n1 和 全0 n2,然后遍历所有的操作(全1 用 -1表示)
2.从高位往低位判断,如果这一位n1有1,再判断代价是否小于m,如果n2有1,则直接加
3.要使尽可能大,优先考虑n2中有1的情况
plus:不知道为什么i不能从32开始遍历而是从30开始遍历(多几位会有影响吗?
void gkd() { std::ios::sync_with_stdio(0); std::cin.tie(0);std::cout.tie(0);}
#define int long long
void solve(){
int n,m;
std::cin>>n>>m;
int n1=-1;
int n2=0;
while(n--){
std::string s;
std::cin>>s;
int num;
std::cin>>num;
if(s[0]=='A'){
n1&=num;
n2&=num;
}
else if(s[0]=='O'){
n1 |= num;
n2 |= num;
}
else{
n1^=num;
n2^=num;
}
}
int ans=0;
for(int i=30;i>=0;i--){
if(n2>>i & 1 ==1){
ans+=1<<i;
}
else if(n1>>i & 1 ==1){
if(1<<i <= m){
m-=1<<i;
ans+=1<<i;
}
}
}
std::cout<<ans<<std::endl;
}
signed main(){
gkd();
int t;
//std::cin>>t;
t=1;
while(t--){
solve();
}
}
/***
* ,s555SB@@&
* :9H####@@@@@Xi
* 1@@@@@@@@@@@@@@8
* ,8@@@@@@@@@B@@@@@@8
* :B@@@@X3hi8Bs;B@@@@@Ah,
* ,8i r@@@B: 1S ,M@@@@@@#8;
* 1AB35.i: X@@8 . SGhr ,A@@@@@@@@S
* 1@h31MX8 18Hhh3i .i3r ,A@@@@@@@@@5
* ;@&i,58r5 rGSS: :B@@@@@@@@@@A
* 1#i . 9i hX. .: .5@@@@@@@@@@@1
* sG1, ,G53s. 9#Xi;hS5 3B@@@@@@@B1
* .h8h.,A@@@MXSs, #@H1: 3ssSSX@1
* s ,@@@@@@@@@@@@Xhi, r#@@X1s9M8 .GA981
* ,. rS8H#@@@@@@@@@@#HG51;. .h31i;9@r .8@@@@BS;i;
* .19AXXXAB@@@@@@@@@@@@@@#MHXG893hrX#XGGXM@@@@@@@@@@MS
* s@@MM@@@hsX#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,
* :GB@#3G@@Brs ,1GM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B,
* .hM@@@#@@#MX 51 r;iSGAM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8
* :3B@@@@@@@@@@@&9@h :Gs .;sSXH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:
* s&HA#@@@@@@@@@@@@@@M89A;.8S. ,r3@@@@@@@@@@@@@@@@@@@@@@@@@@@r
* ,13B@@@@@@@@@@@@@@@@@@@5 5B3 ;. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@i
* 5#@@#&@@@@@@@@@@@@@@@@@@9 .39: ;@@@@@@@@@@@@@@@@@@@@@@@@@@@;
* 9@@@X:MM@@@@@@@@@@@@@@@#; ;31. H@@@@@@@@@@@@@@@@@@@@@@@@@@:
* SH#@B9.rM@@@@@@@@@@@@@B :. 3@@@@@@@@@@@@@@@@@@@@@@@@@@5
* ,:. 9@@@@@@@@@@@#HB5 .M@@@@@@@@@@@@@@@@@@@@@@@@@B
* ,ssirhSM@&1;i19911i,. s@@@@@@@@@@@@@@@@@@@@@@@@@@S
* ,,,rHAri1h1rh&@#353Sh: 8@@@@@@@@@@@@@@@@@@@@@@@@@#:
* .A3hH@#5S553&@@#h i:i9S #@@@@@@@@@@@@@@@@@@@@@@@@@A.
*
*
* 又看源码,****呀!
*/