QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#176743 | #6320. Parallel Processing (Hard) | ucup-team1209 | WA | 3ms | 7984kb | C++20 | 2.9kb | 2023-09-11 23:04:21 | 2023-09-11 23:04:21 |
Judging History
answer
#include<bits/stdc++.h>
using std::cin;
using std::cout;
const int N = 100005;
using vec = std::vector<int>;
using vpi = std::vector<std::pair<int, int>>;
std::map<vec, int> map;
std::map<vec, vpi> deletes;
std::map<vec, vec> nxt;
int n;
int dfs(vec x) {
if(x.empty()) return 0;
if(map.count(x)) return map[x];
int ans = 1e9;
vpi del; vec nx;
for(int i = 1;i < (1 << x.size());++i) {
if(i & i >> 1) continue;
int sum = 0;
vec z;
for(int j = 0;j < (int) x.size();++j) if(i >> j & 1) {
sum += (j == (int) x.size() - 1 ? n : x[j + 1]) - x[j];
} else {
z.push_back(x[j]);
}
int co = (sum + 3) / 4 + dfs(z);
if(co < ans) {
ans = co;
del.clear();
for(int j = 0;j < (int) x.size();++j) if(i >> j & 1) {
int nxt = j == (int) x.size() - 1 ? n : x[j + 1];
for(int k = x[j];k < nxt;++k) del.emplace_back(x[j], k + 1);
}
nx = z;
}
}
deletes[x] = del;
nxt[x] = nx;
return map[x] = ans;
}
std::string s[N];
int main() {
cin >> n;
vec v;
for(int i = 1;i < n;++i) {
v.push_back(i);
}
for(int i = 1;i <= n;++i) {
if(i < 10) s[i] = '0' + i;
else s[i] = 'a' + i - 10;
}
if(n > 16) {
std::vector<std::pair<int, int>> d;
int m = n / 5 + 1;
int pb = m % 5 == 3 || m % 5 == 4;
int P[] = { 0, m, m * 2, m * 3 + pb, m * 4 + pb * 2 };
int L[] = { m, m, m + pb, m + pb };
for(int i = 2;i <= m;++i) {
for(int j = 0;j < 4;++j) {
d.emplace_back(i - 1 + P[j], i + P[j]);
}
}
std::vector<std::pair<int, int>> free;
for(int i = 1;i < 4;++i) {
int pos = L[i] - 3;
if(pb && i == 1) {
pos = L[i] - 1;
}
for(int j = pos;j <= L[i];++j) {
d.emplace_back(P[i], P[i] + j);
}
if(pb && i == 1) {
d.emplace_back(m + P[2], m + 1 + P[2]);
d.emplace_back(m + P[3], m + 1 + P[3]);
}
for(int j = 1;j < pos;++j) {
free.emplace_back(P[i], P[i] + j);
}
}
for(int k = P[4] + 1;k <= n;++k) {
d.emplace_back(k - 1, k);
for(int x = 0;x < 3;++x) {
if(free.size()) {
d.push_back(free.back());
free.pop_back();
} else {
auto x = d.back();
d.push_back(x);
}
}
}
for(;free.size();) {
for(int x = 0;x < 4;++x) {
if(free.size()) {
d.push_back(free.back());
free.pop_back();
} else {
auto x = d.back();
d.push_back(x);
}
}
}
cout << d.size() / 4 << '\n';
for(auto [u, v] : d) {
cout << v << ' ' << u << ' ' << v << '\n';
s[v] = s[u] + s[v];
}
// for(int i = 1;i <= n;++i) cout << s[i] << '\n';
return 0;
}
dfs(v);
cout << dfs(v) << '\n';
return 0;
for(;v.size();) {
auto d = deletes[v];
for(;d.size() % 4;) d.emplace_back(2e3, 2e3);
for(auto [u, v] : d) {
cout << v << ' ' << u << ' ' << v << '\n';
s[v] = s[u] + s[v];
}
v = nxt[v];
}
// for(int i = 1;i <= n;++i) cout << s[i] << '\n';
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 6960kb
input:
17
output:
7 2 1 2 6 5 6 10 9 10 15 14 15 3 2 3 7 6 7 11 10 11 16 15 16 4 3 4 8 7 8 12 11 12 17 16 17 7 4 7 8 4 8 13 12 13 18 17 18 10 8 10 11 8 11 12 8 12 13 8 13 15 13 15 16 13 16 17 13 17 18 13 18 14 13 14 9 8 9 6 4 6 5 4 5
result:
ok AC
Test #2:
score: 0
Accepted
time: 2ms
memory: 6772kb
input:
18
output:
7 2 1 2 6 5 6 10 9 10 15 14 15 3 2 3 7 6 7 11 10 11 16 15 16 4 3 4 8 7 8 12 11 12 17 16 17 7 4 7 8 4 8 13 12 13 18 17 18 10 8 10 11 8 11 12 8 12 13 8 13 15 13 15 16 13 16 17 13 17 18 13 18 14 13 14 9 8 9 6 4 6 5 4 5
result:
ok AC
Test #3:
score: 0
Accepted
time: 0ms
memory: 6968kb
input:
19
output:
8 2 1 2 6 5 6 10 9 10 15 14 15 3 2 3 7 6 7 11 10 11 16 15 16 4 3 4 8 7 8 12 11 12 17 16 17 7 4 7 8 4 8 13 12 13 18 17 18 10 8 10 11 8 11 12 8 12 13 8 13 15 13 15 16 13 16 17 13 17 18 13 18 19 18 19 14 13 14 9 8 9 6 4 6 5 4 5 5 4 5 5 4 5 5 4 5
result:
ok AC
Test #4:
score: 0
Accepted
time: 2ms
memory: 6768kb
input:
20
output:
8 2 1 2 7 6 7 12 11 12 17 16 17 3 2 3 8 7 8 13 12 13 18 17 18 4 3 4 9 8 9 14 13 14 19 18 19 5 4 5 10 9 10 15 14 15 20 19 20 7 5 7 8 5 8 9 5 9 10 5 10 12 10 12 13 10 13 14 10 14 15 10 15 17 15 17 18 15 18 19 15 19 20 15 20 16 15 16 11 10 11 6 5 6 6 5 6
result:
ok AC
Test #5:
score: 0
Accepted
time: 2ms
memory: 6704kb
input:
21
output:
8 2 1 2 7 6 7 12 11 12 17 16 17 3 2 3 8 7 8 13 12 13 18 17 18 4 3 4 9 8 9 14 13 14 19 18 19 5 4 5 10 9 10 15 14 15 20 19 20 7 5 7 8 5 8 9 5 9 10 5 10 12 10 12 13 10 13 14 10 14 15 10 15 17 15 17 18 15 18 19 15 19 20 15 20 21 20 21 16 15 16 11 10 11 6 5 6
result:
ok AC
Test #6:
score: 0
Accepted
time: 2ms
memory: 6976kb
input:
120
output:
48 2 1 2 27 26 27 52 51 52 77 76 77 3 2 3 28 27 28 53 52 53 78 77 78 4 3 4 29 28 29 54 53 54 79 78 79 5 4 5 30 29 30 55 54 55 80 79 80 6 5 6 31 30 31 56 55 56 81 80 81 7 6 7 32 31 32 57 56 57 82 81 82 8 7 8 33 32 33 58 57 58 83 82 83 9 8 9 34 33 34 59 58 59 84 83 84 10 9 10 35 34 35 60 59 60 85 84 8...
result:
ok AC
Test #7:
score: 0
Accepted
time: 2ms
memory: 6892kb
input:
421
output:
168 2 1 2 87 86 87 172 171 172 257 256 257 3 2 3 88 87 88 173 172 173 258 257 258 4 3 4 89 88 89 174 173 174 259 258 259 5 4 5 90 89 90 175 174 175 260 259 260 6 5 6 91 90 91 176 175 176 261 260 261 7 6 7 92 91 92 177 176 177 262 261 262 8 7 8 93 92 93 178 177 178 263 262 263 9 8 9 94 93 94 179 178 ...
result:
ok AC
Test #8:
score: 0
Accepted
time: 2ms
memory: 7236kb
input:
464
output:
186 2 1 2 95 94 95 188 187 188 282 281 282 3 2 3 96 95 96 189 188 189 283 282 283 4 3 4 97 96 97 190 189 190 284 283 284 5 4 5 98 97 98 191 190 191 285 284 285 6 5 6 99 98 99 192 191 192 286 285 286 7 6 7 100 99 100 193 192 193 287 286 287 8 7 8 101 100 101 194 193 194 288 287 288 9 8 9 102 101 102 ...
result:
ok AC
Test #9:
score: 0
Accepted
time: 2ms
memory: 7416kb
input:
812
output:
325 2 1 2 165 164 165 328 327 328 492 491 492 3 2 3 166 165 166 329 328 329 493 492 493 4 3 4 167 166 167 330 329 330 494 493 494 5 4 5 168 167 168 331 330 331 495 494 495 6 5 6 169 168 169 332 331 332 496 495 496 7 6 7 170 169 170 333 332 333 497 496 497 8 7 8 171 170 171 334 333 334 498 497 498 9 ...
result:
ok AC
Test #10:
score: 0
Accepted
time: 0ms
memory: 7392kb
input:
862
output:
345 2 1 2 175 174 175 348 347 348 522 521 522 3 2 3 176 175 176 349 348 349 523 522 523 4 3 4 177 176 177 350 349 350 524 523 524 5 4 5 178 177 178 351 350 351 525 524 525 6 5 6 179 178 179 352 351 352 526 525 526 7 6 7 180 179 180 353 352 353 527 526 527 8 7 8 181 180 181 354 353 354 528 527 528 9 ...
result:
ok AC
Test #11:
score: 0
Accepted
time: 3ms
memory: 7744kb
input:
996
output:
398 2 1 2 202 201 202 402 401 402 602 601 602 3 2 3 203 202 203 403 402 403 603 602 603 4 3 4 204 203 204 404 403 404 604 603 604 5 4 5 205 204 205 405 404 405 605 604 605 6 5 6 206 205 206 406 405 406 606 605 606 7 6 7 207 206 207 407 406 407 607 606 607 8 7 8 208 207 208 408 407 408 608 607 608 9 ...
result:
ok AC
Test #12:
score: 0
Accepted
time: 3ms
memory: 7984kb
input:
997
output:
399 2 1 2 202 201 202 402 401 402 602 601 602 3 2 3 203 202 203 403 402 403 603 602 603 4 3 4 204 203 204 404 403 404 604 603 604 5 4 5 205 204 205 405 404 405 605 604 605 6 5 6 206 205 206 406 405 406 606 605 606 7 6 7 207 206 207 407 406 407 607 606 607 8 7 8 208 207 208 408 407 408 608 607 608 9 ...
result:
ok AC
Test #13:
score: -100
Wrong Answer
time: 2ms
memory: 7720kb
input:
998
output:
400 2 1 2 202 201 202 402 401 402 602 601 602 3 2 3 203 202 203 403 402 403 603 602 603 4 3 4 204 203 204 404 403 404 604 603 604 5 4 5 205 204 205 405 404 405 605 604 605 6 5 6 206 205 206 406 405 406 606 605 606 7 6 7 207 206 207 407 406 407 607 606 607 8 7 8 208 207 208 408 407 408 608 607 608 9 ...
result:
wrong answer L = 400 is larger than 399