QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#834053#2677. JOJOhhy0613100 ✓19ms23288kbC++141.5kb2024-12-27 10:35:152024-12-27 10:35:16

Judging History

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

  • [2024-12-27 10:35:16]
  • 评测
  • 测评结果:100
  • 用时:19ms
  • 内存:23288kb
  • [2024-12-27 10:35:15]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=100005,mod=998244353;
int ma[N],nxt[N],t=-1,num[N],pre[N];
map<pair<int,char>,int> mm[N];
long long ans[N];
char ch[N];
long long calc(int l,int r){
	if(l>r) return 0;
	return 1ll*(l+r)*(r-l+1)/2;
}
void DFS(int u,int x,char c,long long lst){
	if(u!=0){
		++t;
		num[t]=x;
		ch[t]=c;
		pre[t]=(t==0?0:pre[t-1])+x;
		ans[u]=lst;
		if(t==0){
			nxt[t]=-1;
			ans[u]+=calc(0,x-1);
		}else{
			int q=nxt[t-1];
			while(q!=-1 && (num[q+1]!=x || ch[q+1]!=c)) q=nxt[q];
			if(num[q+1]==x && ch[q+1]==c) nxt[t]=q+1;
			else{
				if(ch[0]==c && num[0]<x) nxt[t]=0;
				else nxt[t]=-1;
			}
			int now=0;
			q=nxt[t-1];
			while(now<x){
				if(ch[q+1]==c && now<num[q+1]){
					ans[u]+=calc((q==-1?0:pre[q])+now+1,(q==-1?0:pre[q])+min(num[q+1],x));
					now=num[q+1];
				}
				if(q==-1) break;
				q=nxt[q];
			}
			if(ch[0]==c && now<x) ans[u]+=1ll*num[0]*(x-now);
		}
	}else ans[u]=0;
	for(auto P:mm[u]) DFS(P.second,P.first.first,P.first.second,ans[u]);
	if(u!=0) --t;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	int n;
	cin >> n;
	ma[0]=0;
	for(int i=1;i<=n;++i){
		int op,x;
		cin >> op >> x;
		if(op==1){
			char c;
			cin >> c;
			if(mm[ma[i-1]].find(make_pair(x,c))==mm[ma[i-1]].end()) mm[ma[i-1]][make_pair(x,c)]=i;
			ma[i]=mm[ma[i-1]][make_pair(x,c)];
		}else ma[i]=ma[x];
	}
	DFS(0,0,'?',0);
	for(int i=1;i<=n;++i) cout << ans[ma[i]]%mod << '\n';
	return 0;
} 

詳細信息


Pretests


Final Tests

Test #1:

score: 10
Accepted
time: 0ms
memory: 8744kb

input:

300
1 281 t
1 196 p
1 96 g
1 196 w
2 1
1 281 g
1 14 n
1 14 x
1 173 y
1 96 z
1 96 u
1 96 h
2 6
1 281 t
2 7
1 196 p
2 16
1 96 g
1 196 w
2 6
1 281 x
1 14 n
1 14 x
1 173 y
1 96 z
1 96 u
1 96 h
1 16 j
1 281 t
1 196 p
1 96 g
1 196 w
1 281 g
2 14
1 14 n
1 14 x
1 173 y
1 96 z
1 96 u
1 96 h
1 281 t
1 196 p
1...

output:

39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
78961
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
39340
78961
78961
78961
78961
78961
78961
78961
78961
78961
78961
78961
78961
118582
118582
118582
118582
118582
118582
118582
118582
1185...

result:

ok 300 numbers

Test #2:

score: 10
Accepted
time: 1ms
memory: 8300kb

input:

300
1 81 g
1 23 q
1 126 e
1 244 d
1 20 g
1 20 d
1 277 i
1 126 j
1 267 i
1 277 c
1 126 j
1 20 e
1 277 a
1 45 e
1 23 h
1 277 g
1 267 h
1 277 c
1 244 i
1 23 g
1 126 e
1 244 d
1 20 g
2 9
1 20 d
1 277 i
1 126 j
1 267 i
1 277 c
1 126 j
1 20 e
1 277 a
1 45 e
1 23 h
2 0
1 277 g
1 267 h
1 277 c
2 28
1 244 n
...

output:

3240
3240
3240
3240
3450
3450
3450
3450
3450
3450
3450
3450
3450
3450
3450
22647
22647
22647
22647
22923
22923
22923
23133
3450
3450
3450
3450
3450
3450
3450
3450
3450
3450
3450
0
38226
38226
38226
3450
3450
3726
3726
3726
3936
3936
3936
3450
3450
3450
3450
3450
3450
3450
3450
3450
22647
38226
38226...

result:

ok 300 numbers

Test #3:

score: 10
Accepted
time: 13ms
memory: 9772kb

input:

100000
1 1 c
1 1 v
1 1 u
1 1 f
1 1 g
1 1 l
1 1 c
1 1 a
1 1 j
1 1 c
1 1 y
1 1 l
1 1 n
1 1 u
1 1 o
1 1 u
2 0
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1...

output:

0
0
0
0
0
0
1
1
1
2
2
2
2
2
2
2
0
0
0
0
1
3
6
10
15
21
28
36
45
55
66
78
91
105
120
136
153
171
190
210
231
253
276
300
325
351
378
406
435
465
496
528
561
595
630
666
703
741
780
820
861
903
946
990
1035
1081
1128
1176
1225
1275
1326
1378
1431
1485
1540
1596
1653
1711
1770
1830
1891
1953
2016
2080
...

result:

ok 100000 numbers

Test #4:

score: 10
Accepted
time: 13ms
memory: 10872kb

input:

100000
1 1 q
1 1 w
1 1 e
2 1
1 1 s
1 1 n
1 1 i
1 1 l
1 1 d
1 1 x
1 1 f
1 1 s
1 1 p
1 1 y
1 1 d
1 1 b
1 1 v
1 1 i
1 1 q
1 1 t
1 1 i
1 1 r
1 1 e
1 1 r
1 1 e
1 1 t
2 18
1 1 p
1 1 f
1 1 p
1 1 t
1 1 c
1 1 q
1 1 v
1 1 z
1 1 v
1 1 x
1 1 u
1 1 x
1 1 h
1 1 b
1 1 v
1 1 c
1 1 a
1 1 x
1 1 c
1 1 a
1 1 g
1 1 a
1 ...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
3
6
...

result:

ok 100000 numbers

Test #5:

score: 10
Accepted
time: 12ms
memory: 10988kb

input:

100000
1 1 c
1 1 t
1 1 f
1 1 t
1 1 y
1 1 j
1 1 w
1 1 k
1 1 r
1 1 w
1 1 c
1 1 z
1 1 s
1 1 l
1 1 y
1 1 o
1 1 l
1 1 k
1 1 b
1 1 f
1 1 o
1 1 b
1 1 e
1 1 z
1 1 n
1 1 z
1 1 a
1 1 l
1 1 z
1 1 y
1 1 j
1 1 a
1 1 w
1 1 a
1 1 o
2 18
1 1 p
1 1 m
1 1 t
1 1 i
1 1 v
1 1 c
1 1 m
1 1 l
1 1 f
1 1 s
1 1 r
1 1 q
1 1 f
...

output:

0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
4
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
7
7
7
7
7
7
7
7
7
7
7
7
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
...

result:

ok 100000 numbers

Test #6:

score: 10
Accepted
time: 19ms
memory: 23204kb

input:

100000
1 7564 e
1 1730 a
1 6135 b
1 8268 c
1 1730 d
1 2067 a
1 2067 b
1 2067 e
1 2067 a
1 7246 b
1 7246 d
1 7564 a
1 8268 d
1 6135 e
1 8268 a
1 1730 c
1 7246 d
1 1730 c
1 8268 e
1 6135 b
1 6135 a
1 8268 c
1 8268 e
1 7246 a
1 7564 d
1 8268 e
1 6135 d
1 2067 b
1 4008 a
1 7564 c
1 1962 a
1 6135 c
1 196...

output:

28603266
28603266
28603266
28603266
28603266
28603266
28603266
30740544
30740544
30740544
30740544
30740544
30740544
49562724
49562724
49562724
49562724
49562724
83498610
83498610
83498610
83498610
117434496
132017531
132017531
165953417
165953417
165953417
165953417
165953417
165953417
165953417
16...

result:

ok 100000 numbers

Test #7:

score: 10
Accepted
time: 15ms
memory: 23288kb

input:

100000
1 6850 f
1 2649 g
1 3685 i
1 3685 x
1 7360 y
1 2752 q
1 6850 g
1 2649 k
1 6850 g
1 2649 i
1 8846 e
1 2649 d
1 6850 n
1 3685 h
1 2752 n
1 1911 m
1 2752 q
1 2752 c
1 3685 m
1 3685 z
1 8846 y
1 2649 f
1 8846 w
1 604 a
1 1911 g
1 2752 r
1 604 h
1 7360 p
1 8846 o
1 2649 m
1 3685 q
1 3685 d
1 2649 ...

output:

23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
23457825
26967750
26967750
26967750
26967750
26967750
26967750
26967750
26967750
26967750
26967750
26967750
26967750
269...

result:

ok 100000 numbers

Test #8:

score: 10
Accepted
time: 15ms
memory: 23268kb

input:

100000
1 1420 w
1 7901 g
1 4938 t
1 7901 m
1 4092 k
1 3443 g
1 6147 o
1 1420 d
1 3443 p
1 2296 m
1 7901 n
1 3443 l
1 1420 b
1 3443 a
1 6147 j
1 6570 c
1 7901 n
1 4092 e
1 4092 h
1 1420 w
1 6570 t
1 4092 x
1 3443 w
1 6570 p
1 4938 i
1 6570 p
1 6570 m
1 2296 h
1 7901 e
1 2296 i
1 1420 s
1 1420 l
1 493...

output:

1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
1007490
2016400
2016400
2016400
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897970
5897...

result:

ok 100000 numbers

Test #9:

score: 10
Accepted
time: 13ms
memory: 10048kb

input:

100000
1 1145 f
1 6117 p
1 6262 h
1 6136 o
1 1145 d
1 1668 r
1 4942 e
1 1145 a
1 6262 j
1 6262 t
1 1440 b
1 764 n
1 1145 v
1 764 k
1 3592 i
1 764 p
1 4915 k
1 1440 q
1 1440 g
1 4942 f
1 8963 a
1 9641 t
1 9392 o
2 0
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1 1 a
1 1 b
1 1 c
1...

output:

654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
654940
5658590
5658590
5658590
5658590
0
0
0
0
1
3
6
10
15
21
28
36
45
55
66
78
91
105
120
136
153
171
190
210
231
253
276
300
325
351
378
406
435
465
496
528
561
595
630
666...

result:

ok 100000 numbers

Test #10:

score: 10
Accepted
time: 13ms
memory: 9612kb

input:

100000
1 8697 e
1 3699 h
1 2576 x
1 1733 l
1 2576 p
1 3699 g
1 2330 j
1 8697 d
1 3699 e
1 8697 v
1 1733 b
1 2330 o
1 8697 e
1 2004 l
1 6142 t
1 4498 l
1 2843 c
1 2004 i
1 8697 w
1 1463 l
1 1733 a
1 7185 b
1 2576 r
1 6142 c
1 7185 w
1 6142 j
1 2330 i
1 7185 x
1 8697 t
1 2863 k
1 4498 c
1 1733 d
1 146...

output:

37814556
37814556
37814556
37814556
37814556
37814556
37814556
37814556
44657706
44657706
44657706
44657706
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
82480959
824...

result:

ok 100000 numbers