这道题简单题意就是从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相关推荐

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

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

  2. [BZOJ3668][Noi2014]起床困难综合症 贪心

    3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2409  Solved: 1360 [Submit][ ...

  3. 洛谷 P2114 [NOI2014]起床困难综合症 解题报告

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

  4. [NOI2014] 起床困难综合症

    水题的题解也水...... 原题链接:洛谷 P2114 [NOI2014]起床困难综合症 位运算每一位之间互不干扰. 经过所有门之后每一位不外乎四种结果:一定是0,一定是1,不变或取反. 按位枚举,贪 ...

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

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

  6. BZOJ 3668: [Noi2014]起床困难综合症【二进制+贪心】

    3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MB Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症 ...

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

    3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2547  Solved: 1460 [Submit][ ...

  8. 【NOI2014】起床困难综合症

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

  9. 【题解】洛谷P2114 [NOI2014]起床困难综合症

    前往:我自己搭建的博客 题目 洛谷P2114 [NOI2014]起床困难综合症 题解 题意简化为:在0~m之间找一个数,使得这个数在一系列操作后最大. 由于原数有大小限制,又要使得到的数尽量大,为了充 ...

最新文章

  1. java for 删除 list 中的项
  2. rt linux 测试,rtlinux 的配置和测试
  3. list clear 2 python,python中怎么将列表的数据清空
  4. python 百度ai批量识别_Python基于百度AI的文字识别的示例
  5. php error_get_last(),PHP捕获异常register_shutdown_function和error_get_last的使用
  6. (95)Vivado时序约束TCL命令-all
  7. Mysql Fabric实现学习笔记
  8. Android 应用程序模块: 应用, 任务, 进程, 和线程
  9. Python规范神器(PEP8 ),Pylint是代码检查工具
  10. linux ubuntu软件中心,Ubuntu 20.04 将Ubuntu软件中心切换到Snap商店
  11. vga分辨率与时序配置
  12. VMware安装虚拟机操作步骤[史上最详细]
  13. Android8.1 framework 微信付款码显示不出来
  14. idea使用docker-mave插件打包镜像并部署到harbor私服仓库
  15. 16 服务器无响应什么意思,dns电脑服务器未响应是什么意思如何处理
  16. 教你如何微信公众号图文中怎么下载封面图
  17. 衡水中学计算机老师,衡水中学的老师到底有多拼,看看这“八项规定”就知道了!...
  18. ASIL-汽车安全完整性等级介绍
  19. c语言冒泡排序法代码(c语言冒泡排序法代码讲解)
  20. 算法小抄6-二分查找

热门文章

  1. 基于微信小程序的图书借阅到期提醒功能实现+后台管理系统(SSM+mysql)-JAVA.VUE【数据库设计、论文、源码、开题报告】
  2. Matlab中的数据分布KS检验
  3. uniapp 小程序实现全局所有页面分享 ‘发送给朋友‘和‘分享到朋友圈‘
  4. 低代码,抢不动程序员的饭碗
  5. 认识WRK(简介和编译)
  6. 使用Ubutnu14.04和Chrome打造单功能用途电脑(大屏展示电脑)
  7. 如何为平衡耳机系统选择连接器?
  8. kicad设置自定义原点位置
  9. SQL查询语句——访问不同电脑上的数据库(远程只要联好网就一样)
  10. Python实现关联规则推荐