编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#1606 #1001. A. 神秘谜题 Accepted 100 390 ms 23736 K C++ / 1.5 K q3540555 2019-06-25 11:22:28
显示原始代码
#include <map>
#include <ctime>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
//#define scanf scanf_s
using namespace std;

struct trp {
    int lrp[2];
    bool dta;
};

int tn, oc, onm, nwp = 0, ntp = 0;
int pows[32], sum[32];
vector<trp> wtr;

void adep() { wtr.push_back(trp({ { -1, -1 }, 0 })); }

void adp(int onm) {
    nwp = 0;
    for (int i = 0; i < 32; i++) {
        int lnm = (onm / pows[i]) % 2;
        if (wtr.at(nwp).lrp[lnm] == -1) {
            wtr.at(nwp).lrp[lnm] = ++ntp;
            adep();
            nwp = ntp;
            wtr.at(nwp).dta ^= 1;
        } else {
            nwp = wtr.at(nwp).lrp[lnm];
            wtr.at(nwp).dta ^= 1;
        }
        if (lnm)
            sum[i] ^= 1;
    }
}

void aoap() {
    nwp = 0;
    for (int i = 0; i < 32; i++) {
        if (nwp == -1)
            return;
        swap(wtr.at(nwp).lrp[0], wtr.at(nwp).lrp[1]);
        if (wtr.at(nwp).lrp[1] != -1)
            sum[i] ^= wtr.at(wtr.at(nwp).lrp[1]).dta;
        if (wtr.at(nwp).lrp[0] != -1) {
            nwp = wtr.at(nwp).lrp[0];
            sum[i] ^= wtr.at(nwp).dta;
        } else
            return;
    }
}

int uda() {
    int ans = 0;
    for (int i = 0; i < 32; i++) ans += sum[i] * pows[i];
    return ans;
}

int main() {
    adep();
    pows[0] = 1;
    for (int i = 1; i < 32; i++) pows[i] = 2 * pows[i - 1];
    scanf("%d", &tn);
    for (int i = 0; i < tn; i++) {
        scanf("%d", &oc);
        if (oc == 1) {
            aoap();
        } else {
            scanf("%d", &onm);
            adp(onm);
        }
        printf("%d\n", uda());
    }
    system("pause");
    return 0;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:197 ms
内存:23724 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
用时:193 ms
内存:23736 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