QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#730277#9575. $P \oplus Q = R$ucup-team3924#WA 3ms3692kbC++202.4kb2024-11-09 19:31:492024-11-09 19:31:49

Judging History

你现在查看的是最新测评结果

  • [2024-11-10 08:23:38]
  • hack成功,自动添加数据
  • (/hack/1156)
  • [2024-11-09 19:31:49]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:3692kb
  • [2024-11-09 19:31:49]
  • 提交

answer

#include <bits/stdc++.h>

void print_identity(int n) {
	for (int i = 0; i < n; i++)
		std::cout << i << " ";
	std::cout << "\n";
}

int main() {
    int t;
	std::cin >> t;

	while (t--) {
		int n;
		std::cin >> n;
		
		if (n == 1) {
			std::cout << "Yes\n0\n0\n";
			continue;
		}

		if (n == 2) {
			std::cout << "No\n";
			continue;
		}

		if (n % 12 == 0 && ((n / 12) & (n / 12 - 1)) == 0) {
			std::cout << "Yes\n";
			print_identity(n);
			for (int i = 0; i < n / 3; i++)
				std::cout << n / 3 + i * 2 << " ";
			for (int i = 0; i < n / 3; i++)
				std::cout << 2 * i + 1 << " ";
			for (int i = 0; i < n / 6; i++)
				std::cout << i * 2 << " ";
			for (int i = 0; i < n / 6; i++)
				std::cout << (((n - n / 3) + 2 * i + 1) ^ 2) << " ";
			std::cout << "\n";
			continue;
		}

		if ((n & (n - 1)) != 0) {
			std::cout << "No\n";
			continue;
		}

		std::cout << "Yes\n";
		print_identity(n);
		for (int i = 0; i < n / 2; i++)
			std::cout << i * 2 << " ";
		for (int i = 0; i < n / 2; i++) {
			std::cout << ((i * 2 + 1) ^ 2) << " ";
		}
		std::cout << "\n";
	}

	return 0;

	int n;
    std::cin >> n;
	//n = 24;

    std::vector<int> pa, pb, res;
    for (int i = 0; i < n; i++) {
        pa.push_back(i);
		res.push_back(i);
    }
			
	for (int i = 0; i < n / 3; i++)
		pb.push_back(n / 3 + i * 2);
	for (int i = 0; i < n / 3; i++)
		pb.push_back(2 * i + 1);
	for (int i = 0; i < n / 6; i++)
		pb.push_back(i * 2);
	for (int i = 0; i < n / 6; i++)
		pb.push_back((((n - n / 3) + 2 * i + 1) ^ 2));

    //pb = {8, 10, 12, 14, 16, 18, 20, 22, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 17, 19, 21, 23};

	//for (int i = 0; i < n / 2; i++) {
	//	pb[i] = i * 2;
	//	pb[i + n / 2] = (i * 2 + 1) ^ 2;
	//}

    do {
        std::vector<int> pc;
        for (int i = 0; i < n; i++)
            pc.push_back(pa[i] ^ pb[i]);

        std::sort(pc.begin(), pc.end());
        bool ok = (pc == res);

        if (ok) {
			std::vector<int> aux = pb;
			std::sort(aux.begin(), aux.end());

			assert(aux == res);

			std::cerr << "Found solution!\n";
            for (int i = 0; i < n; i++)
                std::cerr << pa[i] << " ";
            std::cerr << "\n";
            for (int i = 0; i < n; i++)
                std::cerr << pb[i] << " ";
            std::cerr << "\n";
			return 0;
        }

    } while (std::next_permutation(pb.begin(), pb.end()));

    std::cerr << "No solution\n";

    return 0;
}


詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3692kb

input:

2
3
4

output:

No
Yes
0 1 2 3 
0 2 3 1 

result:

ok Correct. (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 3ms
memory: 3628kb

input:

1999
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101...

output:

Yes
0
0
No
No
Yes
0 1 2 3 
0 2 3 1 
No
No
No
Yes
0 1 2 3 4 5 6 7 
0 2 4 6 3 1 7 5 
No
No
No
Yes
0 1 2 3 4 5 6 7 8 9 10 11 
4 6 8 10 1 3 5 7 0 2 11 9 
No
No
No
Yes
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
0 2 4 6 8 10 12 14 3 1 7 5 11 9 15 13 
No
No
No
No
No
No
No
Yes
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14...

result:

wrong answer Testcase 20, n = 20, Jury has better solution. (test case 20)