编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#63514 #1001. A. 神秘谜题 Accepted 100 315 ms 19884 K C++ 11 / 1.4 K little croc 2021-08-11 16:52:03
显示原始代码
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;
typedef long long ll;

class Trie {
public:
    int cnt;
    int next[2];
};

void insert(int x);
void update(int index, int depth);
int query();

const int MAXN = 2e5 + 5, MAXBIT = 32, MAX = MAXN * MAXBIT;
Trie trie[MAX];
int sum1[MAXBIT];
int trcnt;

int main() {
    // freopen("test.txt", "r", stdin);
    int n;
    while (scanf("%d", &n) != EOF) {
        memset(sum1, 0, sizeof(sum1));
        trcnt = 0;
        int opt;
        int x;
        while (n--) {
            scanf("%d", &opt);
            if (opt == 1) {
                update(0, 0);
            }
            if (opt == 2) {
                scanf("%d", &x);
                insert(x);
            }
            int res = query();
            printf("%d\n", res);
        }
        memset(trie, 0, (trcnt + 1) * sizeof(Trie));
    }
    return 0;
}
void insert(int x) {
    int index = 0;
    for (int i = 0; i <= 31; i++) {
        int k = (x >> i) & 1;
        int& pos = trie[index].next[k];
        if (!pos) {
            pos = ++trcnt;
        }
        trie[index].cnt++;
        if (k == 1)
            sum1[i]++;
        index = pos;
    }
}
void update(int index, int depth) {
    if (trie[index].next[1]) {
        update(trie[index].next[1], depth + 1);
    }
    if (trie[index].next[0])
        sum1[depth] += trie[trie[index].next[0]].cnt;
    if (trie[index].next[1])
        sum1[depth] -= trie[trie[index].next[1]].cnt;
    swap(trie[index].next[0], trie[index].next[1]);
}
int query() {
    int res = 0;
    for (int i = 0; i <= 31; i++) {
        res |= ((sum1[i] & 1) << i);
    }
    return res;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:156 ms
内存:19796 KiB

输入文件(1.in

200000
2 526767110
2 724642759
2 567837900
2 104106873
2 357915481
2 33997211
2 444788944
2 
<1586974 bytes omitted>

答案文件(1.ans

526767110
877985729
361528077
330887284
116239149
82537142
510237286
843295274
453728745
55
<2188330 bytes omitted>

用户输出

526767110
877985729
361528077
330887284
116239149
82537142
510237286
843295274
453728745
559263713
323554710
713540578
520942594
<1988302 bytes omitted>

系统信息

Exited with return code 0
测试点 #2
Accepted
得分:100
用时:159 ms
内存:19884 KiB

输入文件(2.in

200000
2 515979308
2 512702340
2 684230440
2 488136957
2 598252313
2 283603971
2 349877373
2
<1586842 bytes omitted>

答案文件(2.ans

515979308
5115816
679905408
899606653
372667236
114362215
302756634
473674072
520218589
525
<2192841 bytes omitted>

用户输出

515979308
5115816
679905408
899606653
372667236
114362215
302756634
473674072
520218589
525056845
703148326
764590712
207056035

<1992813 bytes omitted>

系统信息

Exited with return code 0