题意:有n个关卡,你有一个初始攻击值,这个值初始不能超过m,每个关卡有一个攻击类型op(位运算:& | ^),和参数t;
现在问你通过这些关卡最后你的攻击值最大是多少。
最开始直接看到这道题直接就先打了O(nm)的暴力枚举,m<=2^30.。所以显然知道自己过不了,依旧抱着好玩的态度去水了30分暴力,然后想正解。。
最开始是想让最后结果的每个二进制位尽量是1,说到底就是个贪心。。
后来仔细想一下,蒟蒻表示没想到怎么打= =/你看这就是太弱的代价。。
去膜dalao[PoPoQQQ]。。。
嗯。。嗯。。嗯。。。【阿西八!真的是水题呗quq然而我。。我。。。quq】

贪心的思路就是;
你可以预处理出选择的初始攻击值,最后模拟跑一遍
怎么选择出最右【划掉】优的初始值呢?

对于初始值的每一位:
1.如果这个位取0,使他经过N次操作之后结果是1,那么这就是最吼的
2.1不满足的话,将这位取1使他经过N次操作之后结果为1,并且此时初始值不会超过m.
3.如果以上两种情况都不满足,那么我们放0比放1会更优【反正都不行还不如让当前值更小不能超过m = =】

然后就直接搞出了初始值,最后模拟一遍

就过去了

嗯。。嗯。。嗯。。。
所值这道题正解就素个贪心啊啊啊啊。。。

AC程序如下:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define inf 1e9
#define maxn 100010
using namespace std;
struct node{char ch[10];int t;
}a[maxn];int n,m;
int calc(int x){for(int j=1;j<=n;j++){if(a[j].ch[0]=='A'){x&=a[j].t;}else if(a[j].ch[0]=='X'){x^=a[j].t;}else{x|=a[j].t;}    }return x;
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%s%d",a[i].ch,&a[i].t);}int tp=0;int i;for(i=1;i<=m;i<<=1);for(i>>=1;i;i>>=1){if(calc(0)&i)continue;if(tp+i<=m && calc(i)&i){tp+=i;//printf("*%d\n",tp);}}//printf("(%d)\n",tp);for(int j=1;j<=n;j++){if(a[j].ch[0]=='A'){tp&=a[j].t;}else if(a[j].ch[0]=='X'){tp^=a[j].t;}else{tp|=a[j].t;}//printf("[%d]\n",tp);}printf("%d\n",tp);return 0;
}

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. 【题解】洛谷P2114 [NOI2014]起床困难综合症

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

  9. [BZOJ 3668UOJ #2][Noi2014]起床困难综合症(贪心)

    Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...

  10. BZOJ3668:[NOI2014]起床困难综合症(贪心)

    Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...

最新文章

  1. eigen 编译_OpenCV+Eigen上位机程序移植(七十一)
  2. 使用jQuery更改图片来源
  3. JVM—GC垃圾收集器
  4. java获取浏览器版本号
  5. 基于Nokia S60的游戏开发之二
  6. 全面、详细的前端组件库
  7. (82)Vivado系统同步接口约束
  8. 【java】java 并发编程 CopyOnWriteArrayList
  9. html可折叠边栏,html – 仅使用CSS的可折叠灵活宽边栏
  10. pythonc代码_Python实现C代码统计工具(一)
  11. python读取文本中的内容
  12. HDU 1222 Wolf and Rabbit(gcd)
  13. 红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
  14. R语言学习记录:array()函数
  15. win10 uwp 打电话
  16. R︱sparkR的安装与使用、函数尝试笔记、一些案例
  17. 【渝粤题库】陕西师范大学180204市场营销学 作业(高起本)
  18. codeblocks错误
  19. Workbench中DM建模草图修改不了的解决办法
  20. English_words

热门文章

  1. HBase数据模型和表设计思路
  2. OA系统权限设计思想和概念
  3. dw添加下拉菜单_怎样用dreamweaver制作网站下拉菜单
  4. check异常和uncheck异常的区别b
  5. Intelligent driver model(IDM)
  6. 2020年度软件和信息技术服务竞争力前百家企业名单出炉 —— 旋极信息再次荣登榜单
  7. CC2530基础实验二 外部中断实验
  8. 软件测试之接口自动化面试题汇总
  9. 埋葬了我曾经的执着与思恋题记不过是所谓的世界末日
  10. HDFS副本存放机制