题目链接
AcWing 998.
题意:最初攻击力不知道,给定m次位运算操作,计算经过m次位运算操作后的最大值。

思路:在代码顶部


混合位运算不具有分配律,交换律,结合律

// 存在多个不同的位运算符号时,不具有结合律,因此不能先算后面
/* x & 5 | 6 ^ 7 != x & (5 | 6 ^ 7)  x = 2时,左边为1,右边为0
*/// 思路:按位去判断,从高到低枚举每一位的两种情况.
// 2^30 > 1e9#include <bits/stdc++.h>using namespace std;typedef pair<string,int> PSI;PSI a[100010];
int n,m,t;bool calc(int bit,int now){for(int i=1;i<=n;i++){int x = ((a[i].second >> bit) & 1);if(a[i].first=="AND"){now &= x;}else if(a[i].first=="OR"){now |= x;}else{now ^= x;}}return (now==1);
}int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);// cout << (1<<30) << endl;      1073741824string op;cin >> n >> m;for(int i=1;i<=n;i++){cin >> op >> t;a[i] = make_pair(op,t);}int initatack = 0;    //初始攻击力.for(int i=29;i>=0;i--){int bit = i;if(initatack + (1<<bit) > m || calc(bit,0))  continue;if(calc(bit,1)){initatack += (1 << bit);}}int ans = initatack;for(int i=1;i<=n;i++){int x = a[i].second;if(a[i].first=="AND"){ans &= x;}else if(a[i].first=="OR"){ans |= x;}else{ans ^= x;}}cout << ans << endl;return 0;
}

起床困难综合症(位运算)相关推荐

  1. CH - 0104 起床困难综合症(位运算+贪心)

    题目链接:点击查看 题目大意:我们需要构造一个初始值start,范围在[0,m],要求使用这个初始值进行k次操作后得到的答案最大,每次操作分为三个类型: AND x:让当前答案与x进行按位与 OR x ...

  2. 【NOI2014】起床困难综合症 位运算+贪心

    这道题先求出0和-1经过处理后的答案 具体看代码吧 #include<cstdio> #include<cstring> #include<algorithm> u ...

  3. 起床困难综合征(位运算)

    具体说来,drd 的防御战线由 nn 扇防御门组成.每扇防御门包括一个运算 opop 和一个参数 tt,其中运算一定是 OR,XOR,AND 中的一种,参数则一定为非负整数.如果还未通过防御门时攻击力 ...

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

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

  5. 起床困难综合症(0x01位运算)

    起床困难综合症 题意 drd 的防御战线由 n 扇防御门组成. 每扇防御门包括一个运算 op 和一个参数 t,其中运算一定是 OR,XOR,AND 中的一种,参数则一定为非负整数. 如果还未通过防御门 ...

  6. 位运算 起床困难综合症

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

  7. CH0104 起床困难综合症(位运算典例)

    传送门:起床困难综合症 思路:要知道位运算永远只会改变本位,与其它位泾渭分明.据此,我们不难看出,每个位仅有1.0两种状态,在全部运算后,寻找两种状态的最大结果即可. #include<cstr ...

  8. 位运算——起床困难综合症

    传送门:998. 起床困难综合症 - AcWing题库 思路:因为每一位的操作都是互相独立的,所以从高位到低位枚举范围内的每一位,分别求取0或1的情况的最终答案,该位取1的情况下要保证和已经求出来的前 ...

  9. # 起床困难综合症(二进制枚举+按位求贡献)

    起床困难综合症(二进制枚举+按位求贡献) 题意:n扇门,每扇门包括一个运算op和数x,玩家有一个初始攻击力[0,m],经过n扇门后的值为最终伤害值.给出n和m,求最大伤害值. code: #inclu ...

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

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

最新文章

  1. EJB3.1 JBoss7.1 Eclipse3.7
  2. AVGCN:利用人类注意力引导的图卷积网络进行轨迹预测
  3. Linux下通过txt文件导入数据到MySQL数据库
  4. LOST OF DETAIL!!!的数学原理
  5. 【调查】您对计算机培训感兴趣吗?
  6. LeetCode-剑指 Offer 50. 第一个只出现一次的字符
  7. linux面试题中的简答题,Linux面试题(简答题部分)
  8. python vscode_VScode 配置为Python编辑器
  9. 【知识分享】异步调用与多线程的区别
  10. 数字的处理 :小数点四舍五入
  11. QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)
  12. sqlplus 执行sql文件_详解sqlplus设定行大小、页大小、字符列格式、数字列格式、清屏...
  13. python学习手册记录
  14. java项目报告书_Java项目报告模版.doc
  15. 2022年互联网+全国大学生创新创业大赛解读
  16. matlab x对数坐标,matlab 对数坐标
  17. (解读)什么是渗透测试(Penetration Testing)?
  18. 多彩m618plus评测_将来的你 ,一定会感谢现在换鼠标的自己--多彩M618Plus垂直鼠标...
  19. 如何将图片文字转换成文本?
  20. IT程序员的抉择:我要离开帝都了

热门文章

  1. idea 配置J2EE
  2. 深入理解Java虚拟机:虚拟机类加载机制
  3. mysql字符类型总结及常用字符函数
  4. grub2与grub区别
  5. Basic INFO - InstallShield的版本区分
  6. 活动目录AD 取用户过期时间accountExpires
  7. TypeScript_学习笔记
  8. 实体首部字段-四大首部字段之一
  9. .Net报文请求转义
  10. 游戏的发动机——数值设计