起床困难综合症 NOI2014
这道题简单题意就是从0到m选一个数,进行n此操作,使得操作完的数最大。
这道题可以很暴力想到O(nm)的做法,枚举每个0到m的数进行n次操作后的值进行取最大值
但数据范围明显过不去,所以我们要优化一下
首先这些操作都是位运算,是在二进制下对每一位的操作。
因为二进制下每一位都相对独立,并且每一位只有0和1两种情况,所以我们从高位到低位枚举0或1(保证最优解最大),找出能得到最优解的x(0<=x<=m)
对于每一位枚举的0/1共有4种情况,
(ans为记录最优解大小,kkk记录x的大小)
当枚举为0时,
1.操作后为0时不用管它
2.操作后为1时ans累加
当枚举为1时
1.操作后为0时不管
2.操作后为1时且kkk加上这个二进制当前位的大小小于m时 kkk和ans累加。
#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> #include<queue> #define ll long long using namespace std; const int maxn=1000000+101010; inline int read(){int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;for(;isdigit(ch);ch=getchar())x=(x<<3)+(x<<1)+ch-'0';return x*f; }int n,m; struct wzq{int x,y; }a[maxn]; int main(){n=read();m=read();int kk=0,kkk=0;for(int i=1;i<=n;i++){char b[30];scanf("%s%d",b,&a[i].y);if(b[0]=='A')a[i].x=1;if(b[0]=='O')a[i].x=2;if(b[0]=='X')a[i].x=3;}for(int i=30;i>=0;i--){int t=1<<i,k=0;for(int j=1;j<=n;j++){if(a[j].x==1)t=t&a[j].y,k=k&a[j].y;if(a[j].x==2)t=t|a[j].y,k=k|a[j].y;if(a[j].x==3)t=t^a[j].y,k=k^a[j].y;}if(k&(1<<i))kk+=(1<<i);else if(t&(1<<i)){if(kkk+(1<<i)>m)continue;kkk+=(1<<i);kk+=(1<<i);}}printf("%d",kk);return 0; } /* 10 AND 5 OR 6 XOR 7 */
转载于:https://www.cnblogs.com/wzq--boke/p/9734778.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][ ...
- 【NOI2014】起床困难综合症
[NOI2014]起床困难综合症 [题目描述] 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争 ...
- 【题解】洛谷P2114 [NOI2014]起床困难综合症
前往:我自己搭建的博客 题目 洛谷P2114 [NOI2014]起床困难综合症 题解 题意简化为:在0~m之间找一个数,使得这个数在一系列操作后最大. 由于原数有大小限制,又要使得到的数尽量大,为了充 ...
最新文章
- java for 删除 list 中的项
- rt linux 测试,rtlinux 的配置和测试
- list clear 2 python,python中怎么将列表的数据清空
- python 百度ai批量识别_Python基于百度AI的文字识别的示例
- php error_get_last(),PHP捕获异常register_shutdown_function和error_get_last的使用
- (95)Vivado时序约束TCL命令-all
- Mysql Fabric实现学习笔记
- Android 应用程序模块: 应用, 任务, 进程, 和线程
- Python规范神器(PEP8 ),Pylint是代码检查工具
- linux ubuntu软件中心,Ubuntu 20.04 将Ubuntu软件中心切换到Snap商店
- vga分辨率与时序配置
- VMware安装虚拟机操作步骤[史上最详细]
- Android8.1 framework 微信付款码显示不出来
- idea使用docker-mave插件打包镜像并部署到harbor私服仓库
- 16 服务器无响应什么意思,dns电脑服务器未响应是什么意思如何处理
- 教你如何微信公众号图文中怎么下载封面图
- 衡水中学计算机老师,衡水中学的老师到底有多拼,看看这“八项规定”就知道了!...
- ASIL-汽车安全完整性等级介绍
- c语言冒泡排序法代码(c语言冒泡排序法代码讲解)
- 算法小抄6-二分查找
热门文章
- 基于微信小程序的图书借阅到期提醒功能实现+后台管理系统(SSM+mysql)-JAVA.VUE【数据库设计、论文、源码、开题报告】
- Matlab中的数据分布KS检验
- uniapp 小程序实现全局所有页面分享 ‘发送给朋友‘和‘分享到朋友圈‘
- 低代码,抢不动程序员的饭碗
- 认识WRK(简介和编译)
- 使用Ubutnu14.04和Chrome打造单功能用途电脑(大屏展示电脑)
- 如何为平衡耳机系统选择连接器?
- kicad设置自定义原点位置
- SQL查询语句——访问不同电脑上的数据库(远程只要联好网就一样)
- Python实现关联规则推荐