#2. 【NOI2014】起床困难综合症

21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。正是由于 drd 的活动,起床困难综合症愈演愈烈,以惊人的速度在世界上传播。为了彻底消灭这种病,atm 决定前往海底,消灭这条恶龙。

历经千辛万苦,atm 终于来到了 drd 所在的地方,准备与其展开艰苦卓绝的战斗。drd 有着十分特殊的技能,他的防御战线能够使用一定的运算来改变他受到的伤害。具体说来,drd 的防御战线由 nn 扇防御门组成。每扇防御门包括一个运算 opop 和一个参数 tt,其中运算一定是 OR,XOR,ANDOR,XOR,AND 中的一种,参数则一定为非负整数。如果还未通过防御门时攻击力为 xx,则其通过这扇防御门后攻击力将变为 x op tx op t。最终drd 受到的伤害为对方初始攻击力 xx 依次经过所有 nn 扇防御门后转变得到的攻击力。

由于 atm 水平有限,他的初始攻击力只能为 00 到 mm 之间的一个整数(即他的初始攻击力只能在 0,1,…,m0,1,…,m 中任选,但在通过防御门之后的攻击力不受 mm 的限制)。为了节省体力,他希望通过选择合适的初始攻击力使得他的攻击能让 drd 受到最大的伤害,请你帮他计算一下,他的一次攻击最多能使 drd 受到多少伤害。

输入格式

第一行包含两个整数,依次为 n,mn,m,表示 drd 有 nn 扇防御门,atm 的初始攻击力为 00 到 mm 之间的整数。

接下来 nn 行,依次表示每一扇防御门。每行包括一个字符串 opop 和一个非负整数 tt,两者由一个空格隔开,且 opop 在前,tt 在后,opop 表示该防御门所对应的操作,tt 表示对应的参数。

输出格式

一行一个整数,表示 atm 的一次攻击最多使 drd 受到多少伤害。

样例一

input

3 10
AND 5
OR 6
XOR 7

output

1

explanation

atm可以选择的初始攻击力为 0,1,…,100,1,…,10。

假设初始攻击力为44,最终攻击力经过了如下计算

4 AND 54 OR 66 XOR 7===4614 AND 5=44 OR 6=66 XOR 7=1

类似的,我们可以计算出初始攻击力为 1,3,5,7,91,3,5,7,9 时最终攻击力为 00,初始攻击力为 0,2,4,6,8,100,2,4,6,8,10 时最终攻击力为 11,因此 atm 的一次攻击最多使 drd 受到的伤害值为 11。

样例二

见“样例数据下载”

限制与约定

所有测试数据的范围和特点如下表所示

测试点编号 n,mn,m的规模 约定 备注
1 2≤n≤100,m=02≤n≤100,m=0 0≤t<2300≤t<230

opop一定为OR,XOR,ANDOR,XOR,AND中的一种
 
2 2≤n≤1000,1≤m≤10002≤n≤1000,1≤m≤1000  
3  
4 2≤n,m≤1052≤n,m≤105 存在一扇防御门为AND 0AND 0
5 所有防御门的操作均相同
6  
7 2≤n≤105,2≤m<2302≤n≤105,2≤m<230 所有防御门的操作均相同
8  
9  
10  

在本题中,选手需要先将数字变换为二进制后再进行计算。如果操作的两个数二进制长度不同,则在前补 00 至相同长度。

OROR 为按位或运算,处理两个长度相同的二进制数,两个相应的二进制位中只要有一个为 11,则该位的结果值为 11,否则为 00。

XORXOR 为按位异或运算,对等长二进制模式或二进制数的每一位执行逻辑异或操作。如果两个相应的二进制位不同(相异),则该位的结果值为 11,否则该位为 00。

ANDAND 为按位与运算,处理两个长度相同的二进制数,两个相应的二进制位都为 11,该位的结果值才为 11,否则为 00。

例如,我们将十进制数 55 与十进制数 33 分别进行 OROR,XORXOR 与 ANDAND 运算,可以得到如下结果:

    0101 (十进制 5)
OR 0011 (十进制 3)
= 0111 (十进制 7)
    0101 (十进制 5)
XOR 0011 (十进制 3)
= 0110 (十进制 6)
    0101 (十进制 5)
AND 0011 (十进制 3)
= 0001 (十进制 1)

时间限制:1s1s

空间限制:512MB512MB

下载

样例数据下载

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 100100
using namespace std;
struct abcd{
int p,x;
int cross(int y)
{
if(p==0)
return x&y;
if(p==1)
return x|y;
return x^y;
}
}a[M];
int n,m;
char s[100];
int cross(int x)
{
int i;
for(i=1;i<=n;i++)
x=a[i].cross(x);
return x;
}
int main()
{ int i,ans=0,now;
cin>>n>>m;
for(i=1;i<=n;i++)
{
scanf("%s",s);
if(s[0]=='A')
a[i].p=0;
else if(s[0]=='O')
a[i].p=1;
else
a[i].p=2;
scanf("%d",&a[i].x);
}
for(now=1;now<=m;now<<=1);
for(now>>=1;now;now>>=1)
{
if(cross(0)&now)
continue;
if(ans+now<=m&&cross(now)&now)
ans+=now;
}
printf("%d\n",cross(ans));
}

UVA-2【NOI2014】起床困难综合症的更多相关文章

  1. bzoj3668: [Noi2014]起床困难综合症

    从高位到低位枚举期望的应该是ans最高位尽量取一.如果该数最高位为o的话能够取得1直接更新ans否则判断该位取1是否会爆m不会的话就加上. #include<cstdio> #includ ...

  2. NOI2014 起床困难综合症

    3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 225  Solved: 153[Submit][Stat ...

  3. BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )

    之前以为xor,or,and满足结合律...然后连样例都过不了 早上上体育课的时候突然想出来了...直接处理每一位是1,0的最后结果, 然后从高位到低位贪心就可以了... 滚去吃饭了.. ------ ...

  4. BZOJ 3668: [Noi2014]起床困难综合症【贪心】

    3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2326  Solved: 1305[Submit][St ...

  5. Luogu 睡觉困难综合征 ([NOI2014]起床困难综合症)

    一.[NOI2014]起床困难综合症 题目描述 网址:https://daniu.luogu.org/problemnew/show/2114 大意: 有一条链,链上每一个节点包含一个位运算f 与 一 ...

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

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

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

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

  8. bzoj千题计划238:bzoj3668: [Noi2014]起床困难综合症

    http://www.lydsy.com/JudgeOnline/problem.php?id=3668 这..一位一位的来就好了呀 #include<cstdio> #include&l ...

  9. [NOI2014]起床困难综合症(二进制+贪心)

    题目 [NOI2014]起床困难综合症 做法 先用全\(0\)和全\(1\)去运行一下,再在满足\(m\)的限制下,贪心地从高位到低位选择即可

  10. 3668: [Noi2014]起床困难综合症

    3668: [Noi2014]起床困难综合症 https://www.lydsy.com/JudgeOnline/problem.php?id=3668 分析: 每一位分开考虑. 算出每一位为1,计算 ...

随机推荐

  1. VSCode 初次写vue项目并一键生成.vue模版

    VSCode 写vue项目一键生成.vue模版 1.新建代码片段 文件-->首选项-->用户代码片段-->点击新建代码片段--取名vue.json 确定 2.配置快捷生成的vue模板 ...

  2. Tcl编程第一天,helloworld

    #!/usr/bin/tclsh puts "hello world" 注意:第一行代码表示的是tcl程序运行所需要的文件位置 puts函数代表输出

  3. .net 垃圾回收

    垃圾回收器帮我们处理了内存中不在使用的对象,提高了机器的性能,让开发人员轻松了很多. 你真的了解垃圾回收吗? 或许你知道垃圾回收,听说过是通过标记回收,可是怎么标记回收呢就不是很清楚了,好吧,如果不清 ...

  4. 邮件退信“Remote Server returned '420 4.2.0 Recipient deferred because there is no Mdb'”

    标题是一个近期遇到的NDR 对于Exchange运维工作者,NDR通常给了我们较为清晰的排错方向,我们先看一下退信的原因, 我的一台MailBox报错“远程服务器返回‘420 4.2.0’接受延迟,因 ...

  5. java中取得用户输入的方法

    java中取得用户输入的方法 1.采用java.util.Scanner类 采用Scannerd的next()方法读取,测试代码如下: Scanner sc=new Scanner(System.in ...

  6. SpringMVC中利用HandlerExceptionResolver完成异常处理

    在解决Controller层中的异常问题时,如果针对每个异常处理相对较为繁琐.在SpringMVC中提供了HandlerExceptionResolver用于处理捕获到的异常,从而重新定义返回给前端的 ...

  7. 深度解密 Go 语言之 sync.Pool

    最近在工作中碰到了 GC 的问题:项目中大量重复地创建许多对象,造成 GC 的工作量巨大,CPU 频繁掉底.准备使用 sync.Pool 来缓存对象,减轻 GC 的消耗.为了用起来更顺畅,我特地研究了 ...

  8. SpeedButton

    SpeedButton是一个图形控件,本身没有句柄.因此它不能具有焦点.你可以使用TBitBtn,调整一些属性,可以使他们的外形很接近. 只有从TWinControl派生的控件,才具有Handle.你 ...

  9. 教你如何入手用python实现简单爬虫微信公众号并下载视频

    主要功能 如何简单爬虫微信公众号 获取信息:标题.摘要.封面.文章地址 自动批量下载公众号内的视频 一.获取公众号信息:标题.摘要.封面.文章URL 操作步骤: 1.先自己申请一个公众号 2.登录自己 ...

  10. 1. ajax递归并发处理

    在某些情况下可能会需要循环ajax请求,可以利用递归发送 function recursion( index,array ) { if ( index < array.length ) { // ...