解题报告 『[NOI2014]起床困难综合症(位运算)』
原题地址
虽说是NOI的题目,但其实并不难,所以解析我就写在代码里了。
代码实现如下:
//本题应首先将数拆为二进制. #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (register int i = (a); i <= (b); i++) #define per(i, a, b) for (register int i = (a); i >= (b); i--)int n, m, x, a1 = 0, a2 = -1, ans = 0;//a1表示000...0,a2表示111...1,所以用int或unsigned int都行. char opt[5];int read() {int x = 0, flag = 0;char ch = ' ';while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();if (ch == '-') {flag = 1;ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + ch - '0';ch = getchar();}return flag ? -x : x; }void write(int x) {if (x < 0) {putchar('-');x = -x;}if (x > 9) write(x / 10);putchar(x % 10 + '0'); }int main() {n = read(), m = read();rep(i, 1, n) {scanf("%s", opt), x = read();if (opt[0] == 'A') {a1 &= x;a2 &= x;}if (opt[0] == 'O') {a1 |= x;a2 |= x;}if (opt[0] == 'X') {a1 ^= x;a2 ^= x;}}per(i, 31, 0) {if (a1 >> i & 1) ans += 1 << i;//能将0变为1,何乐而不为? else if (a2 >> i & 1 && (1 << i) <= m) {//注意这里用的是else if. ans += 1 << i;m -= 1 << i;}//能将1变为1,就变,反正也没损失. }write(ans);return 0; }
View Code
转载于:https://www.cnblogs.com/Kirisame-Marisa/p/11172179.html
解题报告 『[NOI2014]起床困难综合症(位运算)』相关推荐
- 解题报告 『[NOI2014]起床困难综合症』
原题地址 虽说是NOI的题目,但其实并不难,所以解析我就写在代码里了. 代码实现如下: //本题应首先将数拆为二进制. #include <bits/stdc++.h> using nam ...
- CH - 0104 起床困难综合症(位运算+贪心)
题目链接:点击查看 题目大意:我们需要构造一个初始值start,范围在[0,m],要求使用这个初始值进行k次操作后得到的答案最大,每次操作分为三个类型: AND x:让当前答案与x进行按位与 OR x ...
- 【NOI2014】起床困难综合症 位运算+贪心
这道题先求出0和-1经过处理后的答案 具体看代码吧 #include<cstdio> #include<cstring> #include<algorithm> u ...
- [NOI2014] 起床困难综合症
水题的题解也水...... 原题链接:洛谷 P2114 [NOI2014]起床困难综合症 位运算每一位之间互不干扰. 经过所有门之后每一位不外乎四种结果:一定是0,一定是1,不变或取反. 按位枚举,贪 ...
- 洛谷 P2114 [NOI2014]起床困难综合症 解题报告
P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...
- 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一直坚持与起床困难综合症作 ...
- BZOJ 3668: [Noi2014]起床困难综合症【二进制+贪心】
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MB Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症 ...
最新文章
- Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)
- WebSphere安装
- 一种新的url定向技术-使用@与/?
- mysql 用户管理表_mysql用户管理
- nrm : 无法加载文件 C:\Users\hc\AppData\Roaming\npm\nrm.ps1 ,因为在此系统上禁止运行脚本。
- 从零开始构建HTML 5 Web页面
- Java 添加、验证PDF 数字签名
- 信源编码与信道编码区别(十一)
- 解决微信小程序图片上传点击无反应问题
- 冒泡排序——《图解算法》
- html行内样式选择器怎么写,巧用CSS伪类选择器实现九种样式的九宫格
- Keil to STM32CubeIDE标准库移植
- 自己动手该 博客 百度给的模板不好看,有没个性
- CSS角度单位(deg)
- 增长的旋律——AARRR模式思考(二)
- matlab学习之旅1——钢琴音频
- C语言:编求阶乘函数
- python虚拟仿真_中国美术学院
- 首尔半导体WICOP双色LED被用于2020款奥迪A4前灯
- 打开、关闭系统软键盘(触摸屏)
热门文章
- linux ssh客戶端:termius介绍及安装
- linux KVM win虚拟机磁盘扩容(qcow2)
- linux snap安装redis-desktop-manager
- openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程
- 【视频】vue组件之props属性
- IDEA中maven项目所有文件都识别不了,明明存在的类提示找不到,原来只需一键解决。。。
- gpib安装包 python_ioctl errorno:25在使用pythongpib的GPIB通信中
- Android开发中手机存储路径问题
- 协方差、相关系数---通俗解释
- matlab中如何添加注释