传送门

分析

orz zwj

最好想到的方法是我们枚举每一位是0还是1,然后暴力求出经过n个操作之后的结果来决定这一位是0还是1

然后我们发现这种暴力的做法居然能a

但是还有更好的方法

我们只考虑开始的数每位都是0和每位都是1这两种情况

然后算出n次操作之后变成了什么

如果由0变1则我们这一位肯定是0

否则如果由1变1我们就将这一位设为1

其它无法变成1的位全部赋为0即可

详见代码

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
int n,m;
int opt[],sum[],is[],Ans;
//opt = 1 OR
//opt = 2 XOR
//opt = 3 AND
inline int have(int x,int wh){
if(opt[wh]==)return x|sum[wh];
else if(opt[wh]==)return x^sum[wh];
else return x&sum[wh];
}
inline void deal(int x){
int i,j,k=(x==?:);
for(i=;i<=n;i++)x=have(x,i);
for(i=;i>=;i--)
if(x&(<<i)&&!is[i]&&(m>=(<<i)||!k)){
Ans+=(<<i);
is[i]=;
if(k)m-=(<<i);
}
return;
}
int main(){
int i,j,k;
scanf("%d%d",&n,&m);
char s[];
for(i=;i<=n;i++){
scanf("%s",s);
if(s[]=='O')opt[i]=;
else if(s[]=='X')opt[i]=;
else opt[i]=;
scanf("%d",&sum[i]);
}
deal();
deal(-);
printf("%d\n",Ans);
return ;
}

p2114 起床困难综合症的更多相关文章

  1. 洛谷P2114 起床困难综合症【位运算】【贪心】

    题目:https://www.luogu.org/problemnew/show/P2114 题意:有n个操作,每个可以是与.或.异或 一个数. 初始值是0~m之间的一个数,问经过n个运算之后,可以得 ...

  2. P2114 [NOI2014]起床困难综合症(二进制)

    P2114 [NOI2014]起床困难综合症 我们开始设俩数,一个二进制表示全是1,另一个全是0(就是2147483647 和 0 辣) 蓝后跑一遍门 于是最后有4种情况 1->0,1-> ...

  3. 洛谷P2114 [NOI2014]起床困难综合症

    P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...

  4. 洛谷 P2114 [NOI2014]起床困难综合症 解题报告

    P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...

  5. [P2114] [NOI2014]起床困难综合症 (位运算)

    题面 传送门:https://www.luogu.org/problemnew/show/P2114 Solution 一道很有意思的位运算题. 要做这一题,我们首先得了解一个很重要的特点 位运算过程 ...

  6. 二进制拆位(贪心)【p2114】[NOI2014]起床困难综合症

    Description 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了 ...

  7. 洛谷 P2114 [NOI2014]起床困难综合症

    题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...

  8. P2114 [NOI2014]起床困难综合症【二进制运算+优化】

    起床困难综合症[二进制运算+优化] 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过 ...

  9. 洛谷 P2114 [NOI2014]起床困难综合症 位运算

    题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...

随机推荐

  1. AutoCAD2014的安装与激活

    1.安装包与激活文件的下载 链接:https://pan.baidu.com/s/1I2-x9T__sQAgtvjkOyc_1Q 密码:5pd1 2.CAD的安装 此过程没什么特殊要求,安装时随便输入 ...

  2. OpenCV - win7+vs2013(2012)+opencv3.0.0 环境配置 (以及配置技巧)

    1. opencv 3.0.0 库下载地址, 这里的版本是3.0.0,其他的版本配置可能不一样,请大家注意. http://sourceforge.net/projects/opencvlibrary ...

  3. 自定义php(NON-CORE WORDPRESS FILE) 引用 wordpress

    在文件头头添加下面代码,实现此页面可以调用wordpress的内置方法 <?php $parse_uri = explode ( 'wp-content', $_SERVER ['SCRIPT_ ...

  4. FS系统开发设计(思维导图)

      FS系统开发设计(思维导图) 最近做了一个小系统,公司应急,要对各个部门进行费用成本核算分摊,做运维,苦于无奈,简简单单的设计了一下,模仿用友ERP软件,首先对DB进行了初步设计,总体如下: 未完 ...

  5. python之 centos6.7下 python 3.5.2 源码、Django-1.9 安装

    在linux6.5中已经自带了python 2 .python 2.6 ,并且yum程序使用的就是自带的python,所以系统自带的python不要随意卸载否则可能导致yum用不了. 测试环境:cen ...

  6. 一段shallowCopy和deepCopy的认识

    :什么是浅拷贝(shallow copy)和深拷贝(deep copy)? A: 浅拷贝就是成员数据之间的一一赋值:把值一一赋给要拷贝的值.但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资 ...

  7. 利用PowerDesigner设计数据库

    PowerDesigner非常强大, 可以利用它完成数据库的设计. 1.下载地址:http://pan.baidu.com/s/1DsLrg 2.表设计: 建立概念数据模型(Conceptual Da ...

  8. 刷题常用的STL容器总结

    本文归纳总结刷题常用到STL容器以及一些标准算法,主要包括: string.vector.map.pair.unordered_map.set.queue.priority_queue.stack,以 ...

  9. UE4流关卡

    转自:http://blog.ch-wind.com/ue4-level-streaming/ 流关卡可以使得关卡内容只在玩家“需要”的时候才加载,在很多游戏中都有使用这个技术. 当前UE4版本4.1 ...

  10. [MySQL]修改mysql数据库的root密码的方法

    方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...