QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#73387#4820. Kitten's ComputerJerryTclWA 2ms3476kbC++142.8kb2023-01-24 22:30:222023-01-24 22:30:23

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-01-24 22:30:23]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:3476kb
  • [2023-01-24 22:30:22]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int W = 64;
typedef int Rg;
#define fi first
#define se second
int s[600], t;
int New() { return s[t--]; }
void Del(int x) { s[++t] = x; }
void Set(Rg out, Rg in) { printf("SET %d %d\n", out, in); }
void Xor(Rg out, Rg in0, Rg in1) { printf("XOR %d %d %d\n", out, in0, in1); }
void And(Rg out, Rg in0, Rg in1) { printf("AND %d %d %d\n", out, in0, in1); }
void Or(Rg out, Rg in0, Rg in1) { printf("OR %d %d %d\n", out, in0, in1); }
void Lsh(Rg out, int k) { printf("LSH %d %d\n", out, k); }
void Rsh(Rg out, int k) { printf("RSH %d %d\n", out, k); }
void Get(Rg in, int k) { Lsh(in, W - k - 1), Rsh(in, W - 1); }
void Fill(Rg in, Rg h[3]) {
	const Rg h0 = h[0], h1 = h[1], h2 = h[2];
	Set(h0, in), Set(h1, in), Set(h2, in);
	Lsh(h0, 1), Lsh(h1, 2), Lsh(h2, 3);
	Or(in, in, h0), Or(h1, h1, h2), Or(in, in, h1);
	Set(h0, in), Set(h1, in), Set(h2, in);
	Lsh(h0, 4), Lsh(h1, 8), Lsh(h2, 12);
	Or(in, in, h0), Or(h1, h1, h2), Or(in, in, h1);
	Set(h0, in), Set(h1, in), Set(h2, in);
	Lsh(h0, 16), Lsh(h1, 32), Lsh(h2, 48);
	Or(in, in, h0), Or(h1, h1, h2), Or(in, in, h1);
}
void Add(Rg in0, Rg in1, Rg out, Rg h[128]) {
	Rg *const h0 = h, *const h1 = h + 64;
	h0[0] = out, Xor(h0[0], in0, in1), And(h1[0], in0, in1);
	for(int i = 1; i < W; ++i) Set(h0[i], h0[0]), Lsh(h0[i], i + 1);
	for(int i = 1; i < W; ++i) Set(h1[i], h1[0]), Lsh(h1[i], i + 1);
	Lsh(h0[0], 1), Xor(h0[0], h0[0], h1[0]), Lsh(h1[0], 1);
	for(int l = 1; l < W; l <<= 1)
		for(int i = 0; i < W; i += (l << 1))
			for(int j = l; j < (l << 1); ++j)
				And(h1[i + j], h1[i + l - 1], h1[i + j]);
	for(int i = 1; i < W; ++i) And(h0[i], h0[i], h1[i - 1]);
	for(int l = 1; l < W; l <<= 1)
		for(int i = 0; i < W; i += (l << 1)) Xor(h0[i], h0[i], h0[i + l]);
}
void Add3(Rg in0, Rg in1, Rg in2, Rg h[2]) {
	const Rg h0 = h[0], h1 = h[1];
	Xor(h0, in0, in1), And(h1, in0, in1);
	And(in1, in2, h0), Xor(in1, in1, h1);
	Xor(in0, in2, h0), Lsh(in1, 1);
}
int main() {
	for(int i = 400; i >= 3; --i) Del(i);
	int a[W], b[W], c[W * 3], a0, a1, a2, d;
	for(int i = 0; i < W; ++i) a[i] = New();
	for(int i = 0; i < W; ++i) b[i] = New();
	for(int i = 0; i < W * 3; ++i) c[i] = New();
	// for(int i = 0; i < W; ++i) {
		// Set(a[i], 1), Lsh(a[i], i);
		// Set(b[i], 2), Get(b[i], i);
		// Fill(b[i], c + i * 3);
		// And(a[i], a[i], b[i]);
	// }
	// priority_queue<pair<int, int>> Q;
	// for(int i = 0; i < W; ++i) Q.emplace(0, a[i]);
	// for(int i = 0; i < W - 2; ++i) {
		// a0 = Q.top().se, Q.pop(), a1 = Q.top().se, Q.pop();
		// a2 = Q.top().se, d = Q.top().fi, Q.pop();
		// Add3(a0, a1, a2, c + i * 2);
		// Q.emplace(a0, d + 2), Q.emplace(a2, d + 4);
	// }
	// a0 = Q.top().se, Q.pop(), a1 = Q.top().se, Add(a0, a1, 1, c);
	Set(2, 0), Add(1, 2, 0, c);
	return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 2ms
memory: 3476kb

input:

main

output:

SET 2 0
XOR 0 1 2
AND 195 1 2
SET 132 0
LSH 132 2
SET 133 0
LSH 133 3
SET 134 0
LSH 134 4
SET 135 0
LSH 135 5
SET 136 0
LSH 136 6
SET 137 0
LSH 137 7
SET 138 0
LSH 138 8
SET 139 0
LSH 139 9
SET 140 0
LSH 140 10
SET 141 0
LSH 141 11
SET 142 0
LSH 142 12
SET 143 0
LSH 143 13
SET 144 0
LSH 144 14
SET 1...

result:

wrong answer Integer parameter [name=j] equals to 0, violates the range [1, 400]