QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#796410#8313. Nim Cheatereggegg185ML 62ms7948kbC++141.2kb2024-12-01 18:16:212024-12-01 18:16:22

Judging History

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

  • [2024-12-01 18:16:22]
  • 评测
  • 测评结果:ML
  • 用时:62ms
  • 内存:7948kb
  • [2024-12-01 18:16:21]
  • 提交

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;
}

Details

Tip: Click on the bar to expand more detailed information

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...

result: