QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#796417#8313. Nim Cheatereggegg185ML 308ms7952kbC++141.3kb2024-12-01 18:19:542024-12-01 18:19:54

Judging History

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

  • [2024-12-01 18:19:54]
  • 评测
  • 测评结果:ML
  • 用时:308ms
  • 内存:7952kb
  • [2024-12-01 18:19:54]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
int head[20010],to[20010],nxt[20010],cnt = 0; int a[20010],b[20010],req[40010],ans[20010],siz[20010],son[20010],sum,fa[20005];
void add(int u,int v) {
	cnt++; to[cnt] = v;
	nxt[cnt] = head[u];
	head[u] = cnt;
}
void D(int now) {
	siz[now] = 1; for(int i = head[now]; i; i = nxt[i]) {
		int v = to[i]; 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(int i = head[now]; i; i = nxt[i]) {
		int v = to[i]; 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]); add(fa[cnt] = cur,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: 6716kb

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: 17ms
memory: 6564kb

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: 59ms
memory: 6756kb

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: 0
Accepted
time: 308ms
memory: 7544kb

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:

ok 39990 lines

Test #5:

score: 0
Accepted
time: 305ms
memory: 7952kb

input:

40000
ADD 10576 91165
ADD 280 27659
ADD 16277 58624
DEL
DEL
ADD 10612 21196
ADD 8276 25617
ADD 6839 51946
ADD 1074 24294
DEL
DEL
ADD 3349 23238
ADD 15144 14483
ADD 6206 79807
ADD 3547 87060
ADD 1087 97537
ADD 10122 60220
ADD 10091 61757
ADD 12920 66201
ADD 4096 73520
ADD 7923 31010
ADD 10470 36374
A...

output:

91165
118824
177448
118824
91165
112361
137978
189924
214218
189924
137978
161216
175699
255506
342566
440103
500323
562080
628281
701801
732811
349599
237033
181301
222463
126421
161218
167338
213886
167338
191789
167338
190911
168525
166940
171519
167339
171519
138349
66779
121547
125082
107235
12...

result:

ok 40000 lines

Test #6:

score: -100
Memory Limit Exceeded

input:

40000
ADD 16016 67003
ADD 949 48982
ADD 5774 23423
ADD 2088 79159
ADD 7311 11147
ADD 16156 39724
ADD 12066 41131
ADD 10620 3205
ADD 1281 54740
ADD 16171 64821
ADD 11967 71149
ADD 7965 35031
ADD 12260 34240
ADD 4447 86355
ADD 951 31740
ADD 16068 71786
ADD 6666 39872
ADD 4459 71463
ADD 9739 41904
ADD ...

output:

67003
115985
139408
218567
229714
269438
310569
313774
368514
433335
504484
270078
304318
390673
302368
374154
238684
310147
258689
259943
232059
233390
267158
196962
254789
189023
132045
140520
73149
133065
154075
171949
145270
151883
152603
160200
68753
115487
111385
85840
82635
84013
137862
14201...

result: