1 条题解

  • 0
    @ 2026-8-5 14:01:01

    题解:权限状态管理

    核心操作

    先构造掩码:mask = 1u << k

    • 开启:status |= mask
    • 关闭:status &= ~mask
    • 切换:status ^= mask
    • 查询:(status >> k) & 1u

    使用 1u 可以确保移位在无符号整数上进行,处理第 3131 位时更安全。

    复杂度

    每次操作均为 O(1)O(1),总时间复杂度 O(q)O(q),空间复杂度 O(1)O(1)

    参考代码

    #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;
    }
    
    • 1

    信息

    ID
    5115
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    递交数
    20
    已通过
    4
    上传者