QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#796414#8313. Nim Cheatereggegg185ML 301ms7484kbC++141.3kb2024-12-01 18:18:512024-12-01 18:18:51

Judging History

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

  • [2024-12-01 18:18:51]
  • 评测
  • 测评结果:ML
  • 用时:301ms
  • 内存:7484kb
  • [2024-12-01 18:18:51]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
int head[20010],to[20010],nxt[20010],cnt = 0; int a[40010],b[40010],req[40010],ans[40010],siz[40010],son[40010],sum,fa[40005];
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: 0ms
memory: 7484kb

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: 6980kb

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: 63ms
memory: 6836kb

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: 301ms
memory: 7476kb

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: -100
Memory Limit Exceeded

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: