[luogu P2114] 起床困难综合症
- 题目描述
- 解题过程
-
- 思路
- 代码
- 感想
题目描述
点击此处查看题目描述
解题过程
思路
位运算,每一个二进制位只有两个选择 0 0 0 或 1 1 1 ,那么我们可以设置一个全 1 1 1 串和一个全 0 0 0 串进行模拟,最终尽可能的选多的 1 1 1 ,贪心法
代码
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <bitset>
using namespace std;
const int MAXN = 1e5 + 1;
bitset <40 > all ,none;
string s;
int n ,m ,x;
int ans = 0;
int main () {
all.set ();none.reset ();scanf ("%d%d",&n ,&m);for (int q = 1;q <= n;++ q) {
cin >> s >> x;if (s[0] == 'A') all &= x ,none &= x;else if (s[0] == 'O') all |= x ,none |= x;else all ^= x ,none ^= x;}for (int q = 0;q < 31;++ q) {
if (none[q]) ans += (1 << q);else if (all[q] && (1 << q) <= m) ans += (1 << q);}printf ("%d\n",ans);return 0;
}
感想
我太弱了
——2020.10.6