起床困难综合症 Acwing 98 按位枚举
发布日期:2021-05-10 11:28:44 浏览次数:18 分类:精选文章

本文共 2327 字,大约阅读时间需要 7 分钟。

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������M������������������������1���0������������������������������������������������1���������������������������������������������������������M������������������1���������������0������������������������������������������0���������������������������������������������������

������������������������������������������������������O(n)������������������������������������������O(log m)������������������������O(n log m)���

������������������������������

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std; const int maxn = 100050; const int inf = 0x3f3f3f3f; struct CMD { string s; int x; }; int main() { // ������������ int n, m; CMD cmd[maxn]; for (int i = 1; i <= n; ++i) { cin >> cmd[i].s >> cmd[i].x; } // ���������������������0���1���ans int ans = 0; for (int i = 30; i >= 0; --i) { if ((ans >> i) != 0) { // ���������������������1������������������������ continue; } // ������������������1������������������ int temp1 = 0; for (int j = 1; j <= n; ++j) { if (((1 << i) & 1) && (cmd[j].s == "AND")) { temp1 &= cmd[j].x >> i & 1; } else if (cmd[j].s == "OR") { temp1 |= cmd[j].x >> i & 1; } else { temp1 ^= cmd[j].x >> i & 1; } } int value1 = temp1; // ������������������0������������������ int temp0 = 0; for (int j = 1; j <= n; ++j) { if (0 && (cmd[j].s == "AND")) { temp0 &= cmd[j].x >> i & 1; } else if (cmd[j].s == "OR") { temp0 |= cmd[j].x >> i & 1; } else { temp0 ^= cmd[j].x >> i & 1; } } int value0 = temp0; if ((value1 > value0) || (value1 == value0 && value1 < m)) { ans = 1; } else if (value0 > value1) { ans = 0; } else { // ���������������������0������������������������������������ ans = 0; } } // ���ans������������������������ int result_ans = 0; for (int i = 30; i >= 0; --i) { if (ans >> i) { result_ans |= 1 << i; } } cout << result_ans << endl; return 0; }

������������������������������������������������������������������������������������������������������������������������������������������������������������M������������������������������������

上一篇:Monument Tour 三分
下一篇:HDU - 3605 Escape 状态压缩最大流

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月29日 12时11分58秒