QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#767233 | #1133. Monster Game | Wansur | 0 | 1ms | 4012kb | C++23 | 4.0kb | 2024-11-20 20:18:14 | 2024-11-20 20:18:14 |
Judging History
answer
#include "monster.h"
#include <bits/stdc++.h>
#define ent '\n'
using namespace std;
typedef long long ll;
int cnt[1040];
void srt(vector<int> &v) {
int n = (int)v.size();
vector<int> p(n);
for(int i = 0; i < n; i++) {
cnt[i] = 0;
for(int j = i + 1; j < n; j++) {
assert(v[i] != v[j]);
}
}
vector<vector<bool>> a(n, vector<bool> (n, 0));
for(int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
a[i][j] = Query(v[i], v[j]);
a[j][i] = 1 - a[i][j];
cnt[i] += a[i][j];
cnt[j] += a[j][i];
}
}
for(int i = 0; i < n; i++) {
p[i] = i;
}
sort(p.begin(), p.end(), [](int i, int j) {
return cnt[i] < cnt[j];
});
for(int i = 0; i < n - 1; i++) {
if(cnt[p[i]] == cnt[p[i + 1]]) {
bool fg = 0;
for(int j = i + 2; j < n; j++) {
fg |= a[p[i]][p[j]];
}
for(int j = 0; j < i; j++) {
fg |= a[p[j]][p[i + 1]];
}
if(fg) {
swap(p[i], p[i + 1]);
}
}
}
vector<int> ans(n);
for(int i = 0; i < n; i++) {
ans[i] = v[p[i]];
}
ans.swap(v);
}
bool us[1040];
int fnd(vector<int> v) {
if((int)v.size() < 10) {
srt(v);
return v[0];
}
int n = (int)v.size();
vector<int> tt = v;
while(v.size() > 1) {
vector<int> nw;
for(int l = 0; l < n; l++) {
int r = min(n - 1, l + 4);
vector<int> d;
for(int i = l; i <= r; i++) {
d.push_back(v[i]);
us[v[i]] = 1;
}
for(int x : tt) {
if(d.size() >= 5) break;
if(!us[x]) {
d.push_back(x);
}
}
srt(d);
nw.push_back(d[0]);
for(int x : d) {
us[x] = 0;
}
}
nw.swap(v);
}
return v[0];
}
vector<int> stupid(int n) {
vector<int> ans(n), pos(n), used(n);
vector<vector<bool>> a(n, vector<bool> (n, 0));
for(int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
a[i][j] = Query(i, j);
a[j][i] = 1 - a[i][j];
}
}
int cnt = n, p0 = -1, p1 = -1, pn = -1, pm = -1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(i != j) {
ans[i] += a[i][j];
}
}
pos[ans[i]] = i;
if(ans[i] == 1) {
p1 = i;
if(p0 < 0) p0 = i;
}
if(ans[i] == n - 2) {
pm = i;
if(pn < 0) pn = i;
}
}
if(!a[p0][pn] && !a[p0][pm]) {
ans[p0]--;
}
else {
ans[p1]--;
}
if(a[pn][p0] && a[pn][p1]) {
ans[pn]++;
}
else {
ans[pm]++;
}
return ans;
}
vector<int> Solve(int n) {
vector<int> p = {0}, ans(n);
for(int i = 1; i < n; i++) {
int pos = -1;
for(int l = 0, r = i - 1; l <= r;) {
int mid = l + r >> 1;
if(Query(i, p[mid])) {
l = mid + 1;
pos = mid;
}
else r = mid - 1;
}
vector<int> nw;
for(int i = 0; i <= pos; i++) {
nw.push_back(p[i]);
}
nw.push_back(i);
for(int i = pos + 1; i < p.size(); i++) {
nw.push_back(p[i]);
}
p.swap(nw);
}
if(n <= 4) {
return stupid(n);
}
int p0 = fnd(p), pos = 0;
while(p[pos] != p0) {
pos++;
}
reverse(p.begin(), p.begin() + pos + 1);
for(int i = pos; i + 1 < n;) {
int j = i + 1;
while(Query(p[i], p[j]) == 0) {
j++;
}
reverse(p.begin() + i + 1, p.begin() + j + 1);
i = j;
}
for(int i = 0; i < n; i++) {
ans[p[i]] = i;
}
return ans;
}
詳細信息
Subtask #1:
score: 0
Runtime Error
Test #1:
score: 10
Accepted
time: 0ms
memory: 4012kb
input:
4 1 0 0 1 0 1 1 0 0 0
output:
Q 1 0 Q 2 0 Q 3 0 Q 3 2 Q 0 1 Q 0 2 Q 0 3 Q 1 2 Q 1 3 Q 2 3 F 4 2 1 0 3
result:
points 1.0 points 1.0
Test #2:
score: 10
Accepted
time: 0ms
memory: 3920kb
input:
4 0 0 0 1 1 0 0 1 1 0
output:
Q 1 0 Q 2 1 Q 3 1 Q 3 2 Q 0 1 Q 0 2 Q 0 3 Q 1 2 Q 1 3 Q 2 3 F 4 1 2 0 3
result:
points 1.0 points 1.0
Test #3:
score: 10
Accepted
time: 1ms
memory: 3960kb
input:
4 0 0 1 1 1 1 0 1 0 1
output:
Q 1 0 Q 2 1 Q 3 1 Q 3 0 Q 0 1 Q 0 2 Q 0 3 Q 1 2 Q 1 3 Q 2 3 F 4 3 0 1 2
result:
points 1.0 points 1.0
Test #4:
score: 10
Accepted
time: 1ms
memory: 3952kb
input:
5 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 1
output:
Q 1 0 Q 2 0 Q 3 0 Q 3 1 Q 4 0 Q 4 2 Q 4 2 Q 4 0 Q 4 1 Q 4 3 Q 2 0 Q 2 1 Q 2 3 Q 0 1 Q 0 3 Q 1 3 Q 4 2 Q 4 0 Q 4 1 Q 2 3 F 5 2 1 3 4 0
result:
points 1.0 points 1.0
Test #5:
score: 10
Accepted
time: 1ms
memory: 3672kb
input:
5 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1
output:
Q 1 0 Q 2 1 Q 2 0 Q 3 2 Q 3 0 Q 4 2 Q 4 0 Q 1 2 Q 1 4 Q 1 0 Q 1 3 Q 2 4 Q 2 0 Q 2 3 Q 4 0 Q 4 3 Q 0 3 Q 1 4 Q 1 0 Q 1 3 F 5 3 1 0 2 4
result:
points 1.0 points 1.0
Test #6:
score: 10
Accepted
time: 0ms
memory: 3764kb
input:
5 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1
output:
Q 1 0 Q 2 0 Q 3 0 Q 3 2 Q 4 2 Q 4 3 Q 4 3 Q 4 2 Q 4 0 Q 4 1 Q 3 2 Q 3 0 Q 3 1 Q 2 0 Q 2 1 Q 0 1 Q 4 2 Q 4 0 Q 2 1 F 5 2 4 3 0 1
result:
points 1.0 points 1.0
Test #7:
score: 10
Accepted
time: 1ms
memory: 4012kb
input:
6 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1
output:
Q 1 0 Q 2 1 Q 3 1 Q 3 2 Q 4 3 Q 4 2 Q 5 3 Q 5 2 Q 5 2 Q 5 4 Q 5 3 Q 5 1 Q 5 0 Q 2 4 Q 2 3 Q 2 1 Q 2 0 Q 4 3 Q 4 1 Q 4 0 Q 3 1 Q 3 0 Q 1 0 Q 5 3 Q 5 1 Q 5 0 F 6 3 4 1 5 0 2
result:
points 1.0 points 1.0
Test #8:
score: 10
Accepted
time: 1ms
memory: 3664kb
input:
6 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1
output:
Q 1 0 Q 2 0 Q 2 1 Q 3 1 Q 3 0 Q 4 0 Q 4 1 Q 5 4 Q 5 3 Q 5 3 Q 5 0 Q 5 4 Q 5 1 Q 5 2 Q 3 0 Q 3 4 Q 3 1 Q 3 2 Q 0 4 Q 0 1 Q 0 2 Q 4 1 Q 4 2 Q 1 2 Q 5 3 Q 5 0 Q 3 4 Q 4 1 Q 4 2 F 6 1 5 4 2 3 0
result:
points 1.0 points 1.0
Test #9:
score: 10
Accepted
time: 1ms
memory: 3768kb
input:
6 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1
output:
Q 1 0 Q 2 1 Q 3 1 Q 3 0 Q 4 1 Q 4 2 Q 5 1 Q 5 2 Q 5 4 Q 2 5 Q 2 4 Q 2 1 Q 2 3 Q 2 0 Q 5 4 Q 5 1 Q 5 3 Q 5 0 Q 4 1 Q 4 3 Q 4 0 Q 1 3 Q 1 0 Q 3 0 Q 2 4 Q 2 1 Q 2 3 Q 4 0 F 6 5 3 1 2 4 0
result:
points 1.0 points 1.0
Test #10:
score: 10
Accepted
time: 1ms
memory: 3856kb
input:
7 1 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1
output:
Q 1 0 Q 2 0 Q 2 1 Q 3 2 Q 3 0 Q 4 0 Q 4 2 Q 4 1 Q 5 2 Q 5 3 Q 5 0 Q 6 5 Q 6 4 Q 6 1 Q 3 0 Q 3 5 Q 3 2 Q 3 4 Q 3 6 Q 3 1 Q 0 5 Q 0 2 Q 0 4 Q 0 6 Q 0 1 Q 5 2 Q 5 4 Q 5 6 Q 5 1 Q 2 4 Q 2 6 Q 2 1 Q 4 6 Q 4 1 Q 6 1 Q 3 5 Q 3 2 Q 3 4 Q 5 6 Q 5 1 F 7 0 5 3 1 2 4 6
result:
points 1.0 points 1.0
Test #11:
score: 10
Accepted
time: 1ms
memory: 3796kb
input:
7 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1
output:
Q 1 0 Q 2 0 Q 3 0 Q 3 1 Q 4 0 Q 4 2 Q 5 0 Q 5 4 Q 6 2 Q 6 5 Q 6 5 Q 6 4 Q 6 2 Q 6 0 Q 6 1 Q 6 3 Q 5 4 Q 5 2 Q 5 0 Q 5 1 Q 5 3 Q 4 2 Q 4 0 Q 4 1 Q 4 3 Q 2 0 Q 2 1 Q 2 3 Q 0 1 Q 0 3 Q 1 3 Q 6 4 Q 4 2 Q 4 0 Q 4 1 Q 2 3 F 7 4 3 5 6 2 0 1
result:
points 1.0 points 1.0
Test #12:
score: 10
Accepted
time: 1ms
memory: 3664kb
input:
7 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1
output:
Q 1 0 Q 2 0 Q 2 1 Q 3 1 Q 3 0 Q 4 3 Q 4 1 Q 5 4 Q 5 1 Q 5 2 Q 6 4 Q 6 2 Q 6 5 Q 0 3 Q 0 4 Q 0 1 Q 0 2 Q 0 5 Q 0 6 Q 3 4 Q 3 1 Q 3 2 Q 3 5 Q 3 6 Q 4 1 Q 4 2 Q 4 5 Q 4 6 Q 1 2 Q 1 5 Q 1 6 Q 2 5 Q 2 6 Q 5 6 Q 0 4 Q 4 1 Q 4 2 Q 1 5 Q 1 6 F 7 1 4 3 0 2 6 5
result:
points 1.0 points 1.0
Test #13:
score: 10
Accepted
time: 1ms
memory: 3836kb
input:
8 1 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1
output:
Q 1 0 Q 2 0 Q 2 1 Q 3 1 Q 3 2 Q 4 1 Q 4 0 Q 5 1 Q 5 0 Q 6 4 Q 6 5 Q 6 0 Q 7 4 Q 7 0 Q 7 6 Q 5 0 Q 5 7 Q 5 6 Q 5 4 Q 5 1 Q 5 3 Q 5 2 Q 0 7 Q 0 6 Q 0 4 Q 0 1 Q 0 3 Q 0 2 Q 7 6 Q 7 4 Q 7 1 Q 7 3 Q 7 2 Q 6 4 Q 6 1 Q 6 3 Q 6 2 Q 4 1 Q 4 3 Q 4 2 Q 1 3 Q 1 2 Q 3 2 Q 5 0 Q 5 7 Q 0 6 Q 0 4 Q 0 1 Q 0 3 Q 6 2 ...
result:
points 1.0 points 1.0
Test #14:
score: 10
Accepted
time: 1ms
memory: 3740kb
input:
8 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1
output:
Q 1 0 Q 2 1 Q 3 1 Q 3 0 Q 4 1 Q 4 0 Q 5 4 Q 5 0 Q 6 4 Q 6 0 Q 6 3 Q 7 5 Q 7 6 Q 7 3 Q 2 1 Q 2 4 Q 2 5 Q 2 0 Q 2 6 Q 2 3 Q 2 7 Q 1 4 Q 1 5 Q 1 0 Q 1 6 Q 1 3 Q 1 7 Q 4 5 Q 4 0 Q 4 6 Q 4 3 Q 4 7 Q 5 0 Q 5 6 Q 5 3 Q 5 7 Q 0 6 Q 0 3 Q 0 7 Q 6 3 Q 6 7 Q 3 7 Q 2 5 Q 5 0 Q 5 6 Q 0 3 Q 0 7 F 8 5 1 2 7 0 3 4 6
result:
points 1.0 points 1.0
Test #15:
score: 10
Accepted
time: 0ms
memory: 3772kb
input:
8 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1
output:
Q 1 0 Q 2 1 Q 3 1 Q 3 0 Q 4 1 Q 4 0 Q 4 3 Q 5 0 Q 5 3 Q 6 0 Q 6 3 Q 6 4 Q 7 5 Q 7 6 Q 7 4 Q 2 1 Q 2 0 Q 2 5 Q 2 3 Q 2 6 Q 2 7 Q 2 4 Q 1 0 Q 1 5 Q 1 3 Q 1 6 Q 1 7 Q 1 4 Q 0 5 Q 0 3 Q 0 6 Q 0 7 Q 0 4 Q 5 3 Q 5 6 Q 5 7 Q 5 4 Q 3 6 Q 3 7 Q 3 4 Q 6 7 Q 6 4 Q 7 4 Q 2 1 Q 2 0 Q 1 5 Q 1 3 Q 1 6 Q 5 7 Q 5 4 ...
result:
points 1.0 points 1.0
Test #16:
score: 0
Runtime Error
input:
198 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 ...
output:
Q 1 0 Q 2 1 Q 2 0 Q 3 0 Q 3 2 Q 4 0 Q 4 1 Q 5 0 Q 5 4 Q 6 1 Q 6 3 Q 6 0 Q 7 6 Q 7 4 Q 7 5 Q 8 1 Q 8 7 Q 8 4 Q 9 1 Q 9 7 Q 9 4 Q 9 8 Q 10 8 Q 10 7 Q 10 4 Q 10 9 Q 11 8 Q 11 0 Q 11 1 Q 12 8 Q 12 6 Q 12 3 Q 12 2 Q 13 11 Q 13 0 Q 13 1 Q 13 6 Q 14 11 Q 14 0 Q 14 12 Q 14 3 Q 15 1 Q 15 3 Q 15 12 Q 15 14 Q ...
result:
Subtask #2:
score: 0
Runtime Error
Test #33:
score: 0
Runtime Error
input:
995 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 ...
output:
Q 1 0 Q 2 0 Q 2 1 Q 3 2 Q 3 0 Q 4 0 Q 4 2 Q 5 4 Q 5 3 Q 5 0 Q 6 0 Q 6 3 Q 6 5 Q 7 0 Q 7 2 Q 7 4 Q 8 0 Q 8 7 Q 8 2 Q 9 4 Q 9 8 Q 9 2 Q 9 1 Q 10 4 Q 10 2 Q 10 1 Q 10 9 Q 11 7 Q 11 5 Q 11 0 Q 11 4 Q 12 11 Q 12 2 Q 12 7 Q 12 8 Q 13 7 Q 13 5 Q 13 4 Q 13 11 Q 14 13 Q 14 2 Q 14 12 Q 14 7 Q 15 7 Q 15 0 Q 15...
result:
Subtask #3:
score: 0
Runtime Error
Test #45:
score: 0
Runtime Error
input:
998 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 ...
output:
Q 1 0 Q 2 1 Q 2 0 Q 3 2 Q 3 0 Q 4 2 Q 4 3 Q 5 4 Q 5 3 Q 5 0 Q 6 4 Q 6 1 Q 6 2 Q 7 4 Q 7 6 Q 7 2 Q 8 2 Q 8 3 Q 8 5 Q 8 0 Q 9 4 Q 9 6 Q 9 7 Q 9 2 Q 10 9 Q 10 5 Q 10 8 Q 10 0 Q 11 4 Q 11 7 Q 11 2 Q 11 9 Q 12 11 Q 12 7 Q 12 2 Q 13 11 Q 13 5 Q 13 10 Q 13 8 Q 14 11 Q 14 7 Q 14 1 Q 15 11 Q 15 7 Q 15 2 Q 15...