当前位置: 代码迷 >> 综合 >> [luogu P2114] 起床困难综合症
  详细解决方案

[luogu P2114] 起床困难综合症

热度:3   发布时间:2023-12-08 06:02:15.0

[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