社区讨论

O(T log n) 做法 TLE 求助

P14664[KenOI 2025] 异或题参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mj7bhi75
此快照首次捕获于
2025/12/15 23:37
2 个月前
此快照最后确认于
2025/12/16 00:13
2 个月前
查看原帖
常数真的有这么大吗,不开 IO 优化就过不了,开了 IO 优化之后 800 ms 极限卡过
还是我写假了?
CPP
#include <iostream>
#include <cstring>
#include <algorithm>

#define int long long

using namespace std;

const int N = 1e6 + 10;

int T, n;
int pows[35];
bool bits[35];

signed main() {
    // ios::sync_with_stdio(false);
    // cin.tie(nullptr);
    
    pows[0] = 1;
    for (int i = 1; i <= 33; i ++) pows[i] = pows[i - 1] * 2;
    
    cin >> T;
    while (T --) {
        cin >> n;
        int k = 0, t = n;
        while (n) {
            if (n & 1) bits[k ++] = true;
            else bits[k ++] = false;
            n >>= 1;
        }
        
        int sum = 0, b = -1;
        for (int i = k - 1; i >= 0; i --) {
            if (bits[i]) {
                sum += pows[i];
                if (b == -1) b = pows[i];
            } else {
                if (b + pows[i] <= t) sum += pows[i] * 2;
            }
        }
        
        cout << sum << endl;
        // for (int i = 0; i < k; i ++) {
        //     if (bits[i]) cout << 1 << ' ';
        //     else cout << 0 << ' ';
        // }
        // cout << endl;
    }
    
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...