3668: [Noi2014]起床困难综合症
3668: [Noi2014]起床困难综合症
https://www.lydsy.com/JudgeOnline/problem.php?id=3668
分析:
每一位分开考虑。
算出每一位为1,计算完后是否产生贡献,每一位为0是否会产生贡献。
然后从高位考虑:
- 如果这一位为0,并且可以产生(1<<i)的贡献,那么就让它为0。
- 如果这一位位1,可以产生贡献,并且在小于等于m,就让它为1。
- 不可以产生贡献的话,直接为0.
如果在某一步,可以比m小了,就是m这位为1,而答案是0了,那么后面的就可以随便选了,否则,这位选的数必须小于等于m的这位。
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#include<cctype>
#include<set>
#include<vector>
#include<queue>
#include<map>
#define fi(s) freopen(s,"r",stdin);
#define fo(s) freopen(s,"w",stdout);
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = ; char s[N][];
int a[N], f[N], n, m; int Calc(int x) {
for (int i=; i<=n; ++i)
if (s[i][] == 'A') x &= a[i];
else if (s[i][] == 'O') x |= a[i];
else if (s[i][] == 'X') x ^= a[i];
return x;
} int main() {
n = read(), m = read();
for (int i=; i<=n; ++i) {
scanf("%s%d", s[i], &a[i]);
}
int t = Calc();
for (int i=; i>=; --i) f[i] = Calc( << i) & ( << i);
int ans = ;
bool flag = false;
for (int i=; i>=; --i) {
if ((t >> i) & ) {
ans += ( << i);
if ((m >> i) & ) flag = true;
}
else if (f[i]) {
if (flag) ans += f[i];
else if ((m >> i) & ) ans += f[i];
}
else if ((m >> i) & ) flag = true;
}
cout << ans;
return ;
}
3668: [Noi2014]起床困难综合症的更多相关文章
- BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )
之前以为xor,or,and满足结合律...然后连样例都过不了 早上上体育课的时候突然想出来了...直接处理每一位是1,0的最后结果, 然后从高位到低位贪心就可以了... 滚去吃饭了.. ------ ...
- BZOJ 3668: [Noi2014]起床困难综合症【贪心】
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2326 Solved: 1305[Submit][St ...
- 【BZOJ】3668: [Noi2014]起床困难综合症(暴力)
http://www.lydsy.com/JudgeOnline/problem.php?id=3668 这题很简单.............. 枚举每一位然后累计即可.. QAQ,第一次以为能1A, ...
- 【刷题】BZOJ 3668 [Noi2014]起床困难综合症
Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...
- BZOJ 3668: [Noi2014]起床困难综合症
Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2693 Solved: 1563 [Submit][Status][Discuss] Descript ...
- bzoj3668: [Noi2014]起床困难综合症
从高位到低位枚举期望的应该是ans最高位尽量取一.如果该数最高位为o的话能够取得1直接更新ans否则判断该位取1是否会爆m不会的话就加上. #include<cstdio> #includ ...
- NOI2014 起床困难综合症
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 225 Solved: 153[Submit][Stat ...
- bzoj千题计划238:bzoj3668: [Noi2014]起床困难综合症
http://www.lydsy.com/JudgeOnline/problem.php?id=3668 这..一位一位的来就好了呀 #include<cstdio> #include&l ...
- [Bzoj3668][Noi2014]起床困难综合症(位运算)
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2612 Solved: 1500[Submit][St ...
随机推荐
- SOJ4480 Easy Problem IV (并查集)
Time Limit: 3000 MS Memory Limit: 131072 K Description 据说 你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过六个人你就能够认识任 ...
- 【[USACO15JAN]草鉴定Grass Cownoisseur】
这大概是我写过的除了树剖以外最长的代码了吧 首先看到有向图和重复经过等敏感词应该能想到先tarjan后缩点了吧 首先有一个naive的想法,既然我们要求只能走一次返回原点,那我们就正着反着建两遍图,分 ...
- IE11,Chrome65,Firefox58 的webdriver驱动下载,调用浏览器打开网址
一.环境及需求 1.1环境 Windows10 + Python 3.6.4 + selenium 3.141 1.2需求 工作需要实现一个网页自动登录的操作,决定使用selenium+python实 ...
- PHP-------文件上传的实例
文件上传的实例 一.上传头像 在注册时,要求用户上传头像,登陆主页面,显示用户信息时,头像也要显示出来. 例子: 注册页面: 图片存数据库时是text类型. <title>无标题文档< ...
- Fidder学习基础(二)
一. 巧用代理抓包. 首页,需设置Tools——>Fiddler Options——>Connectons,维护代理端口及允许其他设备连接. 这里,需要注意的是端口配置不能重复,抓包代理设 ...
- Andorid进阶7—— Ant自动编译打包&发布 android项目
http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...
- Classless Interdomain Routing (CIDR)
IP Address Problems IP Address Exhaustion Class A, B, and C address structure inefficient Class B to ...
- 去掉Win7资源管理器左侧不需要的项目
通过修改注册表去掉win7资源管理器左侧你不喜欢的项目: 1,打开注册表WIN+R, 输入:regedit 2,找到HKEY_CLASSES_ROOT \ CLSID \, 再找到对应项, 其包含一个 ...
- sharepoint OOS巨大坑
首先,我们安装的操作系统是windows server 2016 datacenter最新版,然后安装了OOS2016年的那个版本,打好语言包,安装必备软件,所有的步骤都没问题,但是你配置OOS场的时 ...
- 【Cmd命令行】基础—findstr与for循环
Findstr命令 findstr是Window系统自带的命令,用途是查找指定的一个或多个文件文件中包含(或通过参数 /V来控制不包含)某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符 ...