NOI2014起床困难综合症
Description
Input
第1行包含2个整数,依次为n,m,表示drd有n扇防御门,atm的初始攻击力为0到m之间的整数。接下来n行,依次表示每一扇防御门。每行包括一个字符串op和一个非负整数t,两者由一个空格隔开,且op在前,t在后,op表示该防御门所对应的操作, t表示对应的参数。
Output
一行一个整数,表示atm的一次攻击最多使 drd 受到多少伤害。
Sample Input
AND 5
OR 6
XOR 7
Sample Output
HINT
「样例说明1」
atm可以选择的初始攻击力为0,1,…,10。
假设初始攻击力为4,最终攻击力经过了如下计算
4 AND 5 = 4
4 OR 6 = 6
6 XOR 7 = 1
类似的,我们可以计算出初始攻击力为1,3,5,7,9时最终攻击力为0,初始攻击力为0,2,4,6,8,10时最终攻击力为1,因此atm的一次攻击最多使 drd 受到的伤害值为1。
2<=m<=10^9
0<=t<=10^9
一定为OR,XOR,AND 中的一种
「运算解释」
在本题中,选手需要先将数字变换为二进制后再进行计算。如果操作的两个数二进制长度不同,则在前补0至相同长度。
OR为按位或运算,处理两个长度相同的二进制数,两个相应的二进制位中只要有一个为1,则该位的结果值为1,否则为0。XOR为按位异或运算,对等长二进制模式或二进制数的每一位执行逻辑异或操作。如果两个相应的二进制位不同(相异),则该位的结果值为1,否则该位为0。 AND 为按位与运算,处理两个长度相同的二进制数,两个相应的二进制位都为1,该位的结果值才为1,否则为0。
例如,我们将十进制数5与十进制数3分别进行OR,XOR 与 AND 运算,可以得到如下结果:
0101 (十进制 5) 0101 (十进制 5) 0101 (十进制 5)
OR 0011 (十进制 3) XOR 0011 (十进制 3) AND 0011 (十进制 3)
= 0111 (十进制 7) = 0110 (十进制 6) = 0001 (十进制 1)
1 //minamoto 2 #include<cstdio> 3 #include<iostream> 4 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 5 char buf[1<<21],*p1=buf,*p2=buf; 6 inline int read(){ 7 #define num ch-'0' 8 char ch;bool flag=0;int res; 9 while(!isdigit(ch=getc())) 10 (ch=='-')&&(flag=true); 11 for(res=num;isdigit(ch=getc());res=res*10+num); 12 (flag)&&(res=-res); 13 #undef num 14 return res; 15 } 16 int a=0,b=0x7fffffff; 17 int n,m,ans=0; 18 int main(){ 19 n=read(),m=read(); 20 while(n--){ 21 char opt=getc();int x=read(); 22 switch(opt){ 23 case 'A':a&=x,b&=x;break; 24 case 'X':a^=x,b^=x;break; 25 case 'O':a|=x,b|=x;break; 26 } 27 } 28 for(int i=30;i>=0;--i){ 29 if(a&(1<<i)) ans+=1<<i; 30 else if(m>=(1<<i)&&(b&(1<<i))) m-=1<<i,ans+=1<<i; 31 } 32 printf("%d\n",ans); 33 return 0; 34 }
转载于:https://www.cnblogs.com/bztMinamoto/p/9429072.html
NOI2014起床困难综合症相关推荐
- BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )
之前以为xor,or,and满足结合律...然后连样例都过不了 早上上体育课的时候突然想出来了...直接处理每一位是1,0的最后结果, 然后从高位到低位贪心就可以了... 滚去吃饭了.. ------ ...
- [BZOJ3668][Noi2014]起床困难综合症 贪心
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2409 Solved: 1360 [Submit][ ...
- 洛谷 P2114 [NOI2014]起床困难综合症 解题报告
P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...
- [NOI2014] 起床困难综合症
水题的题解也水...... 原题链接:洛谷 P2114 [NOI2014]起床困难综合症 位运算每一位之间互不干扰. 经过所有门之后每一位不外乎四种结果:一定是0,一定是1,不变或取反. 按位枚举,贪 ...
- 洛谷P2114 [NOI2014]起床困难综合症
P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...
- BZOJ 3668: [Noi2014]起床困难综合症【二进制+贪心】
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MB Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症 ...
- bzoj3668 [Noi2014]起床困难综合症
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2547 Solved: 1460 [Submit][ ...
- 【题解】洛谷P2114 [NOI2014]起床困难综合症
前往:我自己搭建的博客 题目 洛谷P2114 [NOI2014]起床困难综合症 题解 题意简化为:在0~m之间找一个数,使得这个数在一系列操作后最大. 由于原数有大小限制,又要使得到的数尽量大,为了充 ...
- [BZOJ 3668UOJ #2][Noi2014]起床困难综合症(贪心)
Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...
- BZOJ3668:[NOI2014]起床困难综合症(贪心)
Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...
最新文章
- Design Pattern Explained 读书笔记二——设计模式序言
- redis 设置连接数配置修改 java 最大连接数_Spring Boot集成mysql与Redis
- 【Linux】一步一步学Linux——pgrep命令(123)
- 【推荐】Web 2.0 必读经典 !
- Navicat连接MySQL8.0出现2059错误
- linux进程通信发送方式,Linux服务器编程——Linux系统编程之进程通信
- linux 连接两个异构网,如何在Linux(或异构)网络上共享计算机?
- 4位格雷码的顺序编码_能通俗地讲解一下格雷码的编码规则吗?
- 不解禁administrator账号的情况下以管理员身份运行bat文件
- auto.js适合安卓小米6,朋友圈触控点赞
- 我在百度运维的成长经历 之六
- 关于NTFS文件夹的安全权限分配的一些总结
- matleb2016A安装教程
- java 抓取网页_Java抓取网页数据
- android gps 获取方位_Android通过gps获取定位的位置数据和gps经纬度
- 使用selenium下载百度图片
- EMP电磁脉冲射频发射器制作教程
- java实现马尔科夫链_马尔科夫链 Markov Chains(示例代码)
- Web服务器群集——Nginx企业级优化
- 面向服务与微服务架构