QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#796410 | #8313. Nim Cheater | eggegg185 | ML | 62ms | 7948kb | C++14 | 1.2kb | 2024-12-01 18:16:21 | 2024-12-01 18:16:22 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
vector<int> vec[20010]; int a[40010],b[40010],req[40010],ans[40010],siz[40010],son[40010],sum,fa[40005];
void D(int now) {
siz[now] = 1; for(auto v:vec[now]) {
D(v); siz[now] += siz[v];
if(!son[now] || siz[son[now]]<siz[v]) son[now] = v;
}
}
long long dp[18][17005],tmp[17005]; //sigh
void dfs(int now,int dep) {
if(dep >= 18) exit(0);
sum ^= a[now]; ans[now] = dp[dep][sum];
for(auto v:vec[now]) {
if(v == son[now]) continue;
for(int i = 0; i < 16384; i++) dp[dep+1][i] = min(dp[dep][i],dp[dep][i^a[v]]+b[v]);
dfs(v,dep+1);
} if(son[now]) {
for(int i = 0; i < 16384; i++) tmp[i] = dp[dep][i];
for(int i = 0; i < 16384; i++) dp[dep][i] = min(tmp[i],tmp[i^a[son[now]]]+b[son[now]]);
dfs(son[now],dep);
} sum ^= a[now];
}
char s[10];
signed main() {
int n,cnt = 0,cur = 0; scanf("%d",&n); for(int i = 1; i <= n; i++) {
scanf("%s",s+1);
if(s[1] == 'A') {cnt++; scanf("%d%d",&a[cnt],&b[cnt]); vec[fa[cnt] = cur].push_back(cnt); cur = cnt;}
else cur = fa[cur]; req[i] = cur;
} D(0); memset(dp,0x3f,sizeof(dp)); dp[0][0] = 0; dfs(0,0); for(int i = 1; i <= n; i++) printf("%d\n",ans[req[i]]);
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 7948kb
input:
7 ADD 3 10 ADD 2 4 ADD 1 5 ADD 2 1 DEL DEL ADD 3 5
output:
10 14 0 1 0 14 4
result:
ok 7 lines
Test #2:
score: 0
Accepted
time: 16ms
memory: 6948kb
input:
1964 ADD 3004 35344 ADD 6315 69182 ADD 59 78550 ADD 13842 11063 ADD 6255 35962 DEL ADD 13953 33214 ADD 5693 55297 ADD 1056 32685 ADD 13524 45844 ADD 5495 63087 ADD 2963 5957 ADD 7390 51487 ADD 9194 77728 DEL ADD 1958 85909 DEL ADD 6060 26702 ADD 13745 1556 ADD 6128 21684 ADD 9177 98957 ADD 670 35242...
output:
35344 104526 183076 194139 230101 194139 227353 282650 315335 361179 424266 430223 481710 559438 481710 567619 481710 508412 162159 116769 187943 223185 242421 197906 242421 223185 187943 229832 187943 116769 120079 116769 210895 285394 318251 289823 262181 181352 158554 173334 194467 164418 80520 1...
result:
ok 1964 lines
Test #3:
score: 0
Accepted
time: 62ms
memory: 7368kb
input:
7986 ADD 10406 26679 ADD 1401 27753 ADD 3444 55478 ADD 6593 46697 ADD 9685 65960 DEL ADD 3648 11140 ADD 16095 24779 ADD 13199 77124 ADD 7845 42450 ADD 1443 27223 ADD 1147 39482 ADD 1320 25463 ADD 3109 1151 ADD 4171 63655 ADD 10331 20910 ADD 15317 63454 DEL ADD 15015 24513 ADD 10375 61674 DEL ADD 154...
output:
26679 54432 109910 156607 222567 156607 167747 192526 269650 312100 339323 378805 404268 405419 469074 201286 221814 201286 215335 164148 215335 267670 257274 148187 257274 267670 215335 234875 208773 142219 165828 164356 154574 154951 135963 108003 130246 108003 123985 114500 155980 93201 123616 12...
result:
ok 7986 lines
Test #4:
score: -100
Memory Limit Exceeded
input:
39990 ADD 901 53966 ADD 6801 83248 ADD 10537 9950 ADD 4921 30343 DEL DEL DEL ADD 10718 82644 ADD 15697 75103 ADD 11322 54295 DEL DEL DEL ADD 2233 72418 ADD 10998 41706 ADD 5737 78664 ADD 16315 46965 DEL DEL ADD 2384 37544 ADD 15091 57756 ADD 7778 94748 DEL ADD 8859 11993 DEL DEL ADD 14804 66995 DEL ...
output:
53966 137214 147164 177507 147164 137214 53966 136610 211713 266008 211713 136610 53966 126384 168090 246754 293719 246754 168090 205634 263390 358138 263390 275383 263390 205634 272629 205634 168090 196095 196843 196095 280408 361710 385439 446884 480125 567459 480125 446884 496616 539871 496616 53...