【ACWing】998. 起床困难综合症
题目地址:
https://www.acwing.com/problem/content/description/1000/
212121世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因: 在深邃的太平洋海底中,出现了一条名为drd的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。正是由于drd的活动,起床困难综合症愈演愈烈, 以惊人的速度在世界上传播。为了彻底消灭这种病,atm决定前往海底,消灭这条恶龙。历经千辛万苦,atm终于来到了drd所在的地方,准备与其展开艰苦卓绝的战斗。drd有着十分特殊的技能,他的防御战线能够使用一定的运算来改变他受到的伤害。具体说来,drd的防御战线由nnn扇防御门组成。每扇防御门包括一个运算opopop和一个参数ttt,其中运算一定是∣,∧,&|,\land,\&∣,∧,&中的一种,参数则一定为非负整数。如果还未通过防御门时攻击力为xxx,则其通过这扇防御门后攻击力将变为xoptx\ op\ tx op t。最终drd受到的伤害为对方初始攻击力xxx依次经过所有nnn扇防御门后转变得到的攻击力。由于atm水平有限,他的初始攻击力只能为000到mmm之间的一个整数(即他的初始攻击力只能在0,1,…,m0,1,…,m0,1,…,m中任选,但在通过防御门之后的攻击力不受mmm的限制)。为了节省体力,他希望通过选择合适的初始攻击力使得他的攻击能让drd受到最大的伤害,请你帮他计算一下,他的一次攻击最多能使drd受到多少伤害。
输入格式:
第111行包含222个整数,依次为n,mn,mn,m,表示drd有nnn扇防御门,atm的初始攻击力为000到mmm之间的整数。接下来nnn行,依次表示每一扇防御门。每行包括一个字符串opopop和一个非负整数ttt,两者由一个空格隔开,且opopop在前,ttt在后,opopop表示该防御门所对应的操作,ttt表示对应的参数。
输出格式:
输出一个整数,表示atm的一次攻击最多使drd受到多少伤害。
数据范围:
由于位运算是按位做的,不同位上的数之间互相不影响,所以可以暴力枚举每个位上的数,如果是000的话,最后会变成什么,如果是111的话,最后会变成什么。接下来倒着推输入,顺便算出答案。显然,由于我们需要让最后答案尽可能地大,所以在不超过mmm的情况下,要设计输入使得结果的尽可能高的位成为111,设输入是000。我们从高位到低位进行遍历,然后贪心地对xxx的当前位取值。如果当前位是000的话能使得最后答案在当前位成为111,那显然xxx在这一位应该是000;如果当前位是111的话能使得最后答案在当前位成为111,那么要考虑一下使得xxx当前位是111的话,会不会超出mmm的界,如果不会超出,则输入在此位应当为111,并且令xxx在这一位为111。代码如下:
#include <iostream>
#include <bitset>
using namespace std;int n, m;int main() {bitset<30> zero, one;zero.reset();one.set();scanf("%d%d", &n, &m);while (n--) {string s;int x;cin >> s >> x;if (s == "AND") zero &= x, one &= x;else if (s == "OR") zero |= x, one |= x;else zero ^= x, one ^= x;}int res = 0;for (int i = 30, x = 0; i >= 0; i--)// 如果当前位是0就能使得答案在当前位为1,那x的当前位就是0;// 如果当前位是1才能使得答案在当前位为1,那要判断一下会不会出界,如果没出界,就令x在当前位为1if (zero[i]) res |= 1 << i;else if (one[i] && x + (1 << i) <= m) {res |= 1 << i;x += 1 << i;}printf("%d\n", res);return 0;
}
时间复杂度O(n)O(n)O(n),空间O(1)O(1)O(1)。
【ACWing】998. 起床困难综合症相关推荐
- AcWing 998. 起床困难综合症
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 AcWing 998. 起床困难综合症 输入格式 输出格式 代码 总结 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现 ...
- 位运算——起床困难综合症
传送门:998. 起床困难综合症 - AcWing题库 思路:因为每一位的操作都是互相独立的,所以从高位到低位枚举范围内的每一位,分别求取0或1的情况的最终答案,该位取1的情况下要保证和已经求出来的前 ...
- 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一直坚持与起床困难综合症作 ...
- # 起床困难综合症(二进制枚举+按位求贡献)
起床困难综合症(二进制枚举+按位求贡献) 题意:n扇门,每扇门包括一个运算op和数x,玩家有一个初始攻击力[0,m],经过n扇门后的值为最终伤害值.给出n和m,求最大伤害值. code: #inclu ...
- [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][ ...
最新文章
- GDCM:gdcm::FileMetaInformation的测试程序
- php验证卡号,PHP验证信用卡卡号是否正确函数
- 学python的正确方法_学习Python最正确的步骤(0基础必备)
- VMweare 典型创建 Kali Linux 虚拟机
- linux环境下创建postgis数据库,Linux下安装Postgis数据库
- c/c++教程 - 1.8 函数 形参 实参 值传递 声明调用 函数的分文件编写
- 2022“点点点”测试员如何上岸测试开发岗?附完整学习路线!
- 拥有16年开发经验,我都使用了什么工具?[最近更新:2017-10-12]
- GameOfMir俗称GOM引擎源代码全套完整版
- github加速脚本
- Kali linux 局域网arp断网攻击
- 5x2cv配对t检验(5x2cv paired t test)
- 13种老人不适合带孩子_这13种老人真的不适合带孩子 这些老人带孩子后果不堪设想...
- 记成功安装win10+elementary双系统
- 使用CollapsingToolbarLayout高仿稀土掘金个人中心页
- 大数据开发的前景和就业如何?该如何去学习它?
- 会议信息 | BigBrain研讨会 September 21-23, CEST, 线上
- IPFS云服务器预售登录系统,北宁ipfs云算力预售,IPFS社区社区
- 【题解】CQ大神原创的一道题
- LeetCode 137.Single Number II 只出现一次的数字 II
热门文章
- 邮件服务器超级用户,Postfix邮件服务器的安装与配置方法
- 零基础数据挖掘入门-二手车价格预测part(一):EDA-数据探索性分析
- 测试移动硬盘的真实容量的软件,移动硬盘容量标识有猫腻:实际缩水99%
- linux下好玩或者好用的小工具
- GPIO推挽输出和开漏输出模式区别详解
- 大数据与云计算的理解与基本认识
- 我的世界服务器如何开无限小号,实操神技能,微信能“无限”开小号?
- postgres 退出_Postgresl选择正确的关闭模式
- Excel--indirect函数(间接引用)
- 【极学】托马斯的《生命不可承受之轻》