1 条题解
-
0
题解:权限状态管理
核心操作
先构造掩码:
mask = 1u << k。- 开启:
status |= mask; - 关闭:
status &= ~mask; - 切换:
status ^= mask; - 查询:
(status >> k) & 1u。
使用
1u可以确保移位在无符号整数上进行,处理第 位时更安全。复杂度
每次操作均为 ,总时间复杂度 ,空间复杂度 。
参考代码
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); uint32_t status; int q; cin >> status >> q; while (q--) { int op, k; cin >> op >> k; uint32_t mask = 1u << k; if (op == 1) { status |= mask; } else if (op == 2) { status &= ~mask; } else if (op == 3) { status ^= mask; } else { cout << ((status >> k) & 1u) << "\n"; } } cout << status << "\n"; return 0; } - 开启:
信息
- ID
- 5115
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 20
- 已通过
- 4
- 上传者
粤公网安备44195502000195号