[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.
 *
 *
 *    又看源码,****呀!
 */

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务