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

【NOI2014】起床困难综合症 贪心

时间:2017-05-19 19:25:37      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:get   代码   结果   noi   style   div   else   暴力   是什么   

从高到低按位贪心,讨论一下初始0或1,分别暴力算出结果是什么

如果一开始0就能得1当然直接ans垒起来

如果1能得1而且当前m够用,那也垒起来,同时m减掉

否则gg

2min的代码

 1 #include <bits/stdc++.h>
 2 #define miaom(x,y) ((x & (1<<y))>>y)
 3 using namespace std;
 4 int n,m,p[200001],a[60],in[60];
 5 char opt[200001];
 6 char getch()
 7 {
 8     char ch;
 9     for(ch=getchar();!isalpha(ch);ch=getchar());
10     return ch;
11 }
12 int main()
13 {
14     scanf("%d%d",&n,&m);
15     for(int i=1;i<=n;i++)
16     {
17         opt[i]=getch();
18         getch();if(opt[i]!=O)getch();
19         scanf("%d",&p[i]);
20     }
21     int ans=0;
22     for(int i=30;i>=0;i--)
23     {
24         bool a=0,b=1;
25         for(int j=1;j<=n;j++)
26         if(opt[j]==A)
27             a&=miaom(p[j],i),
28             b&=miaom(p[j],i);
29         else
30         if(opt[j]==O)
31             a|=miaom(p[j],i),
32             b|=miaom(p[j],i);
33         else
34         if(opt[j]==X)
35             a^=miaom(p[j],i),
36             b^=miaom(p[j],i);
37         if(a) ans+=1<<i;
38         else
39         if(b && m>=1<<i) m-=1<<i,ans+=1<<i;
40     }
41     printf("%d\n",ans);
42     return 0;
43 }

 

【NOI2014】起床困难综合症 贪心

标签:get   代码   结果   noi   style   div   else   暴力   是什么   

原文地址:http://www.cnblogs.com/wanglichao/p/6879894.html

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