QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#484134#7368. 抄写Eternatis100 ✓14ms48364kbC++141.5kb2024-07-19 16:13:372024-07-19 16:13:39

Judging History

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

  • [2024-07-19 16:13:39]
  • 评测
  • 测评结果:100
  • 用时:14ms
  • 内存:48364kb
  • [2024-07-19 16:13:37]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define N 2000010
#define int long long
#define db long double
#define pii pair<int,int>
#define st first
#define ed second
#define mkp make_pair
#define pb push_back
#define eps 1e-9
#define mod 998244353
#define mod2 1000000007
#define bs 13131
#define bs2 131
#define INF 0x3f3f3f3f3f3f3f3f
#define il inline
#define vi vector<int>
#define ins insert
#define umap unordered_map
#define uset unordered_set
#define R(x) x.begin(),x.end()
#define B(x) x.begin()
#define E(x) x.end()
#define lb lower_bound
#define ub upper_bound
#define vi vector<int>
il int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
int T=1,n,m,k;
int s[N];
int f[N],l[N];
char c[N];
int q[N],h,t=-1;
signed main(){
	n=read(),k=read();
	for(int i=1;i<=26;i++)
		scanf("%lld",&s[i]);
	scanf("%s",c+1);
	for(int i=n;i>=1;i--)
		c[i<<1]=c[i],c[i<<1|1]='$';
	c[1]='$',n=n<<1|1;
	for(int i=1;i<=n;i++)f[i]=INF;
	for(int i=1,p=0;i<=n;i++){
		if(i<p+l[p])l[i]=min(l[(p<<1)-i],p+l[p]-i);
		while(i+l[i]<=n&&i-l[i]>=1&&c[i+l[i]]==c[i-l[i]])l[i]++;
		if(p+l[p]<i+l[i])p=i;
		if(p==i){
			while(h<=t&&q[t]-l[q[t]]>p-l[p])t--;
			q[++t]=p;
		}
		if(i&1)f[i]=f[i-1];
		else {
			f[i]=f[i-1]+s[c[i]-'a'+1];
			while(h<=t&&q[h]+l[q[h]]<=i)h++;
			if(h<=t)f[i]=min(f[i],f[q[h]]+k);
		}
//		printf("%lld ",f[i]);
	}
	printf("%lld\n",f[n]);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

10 920
316 915 331 834 181 122 238 511 910 632 652 717 369 468 866 140 89 183 83 376 257 670 127 643 983 105
xaaxrdtjqv

output:

4663

result:

ok single line: '4663'

Test #2:

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

input:

659 423
752 190 254 128 821 695 798 216 809 606 970 45 830 149 247 662 348 883 122 310 519 81 420 407 854 141
tttttttttttttttttttttttttttccccccccccqqqqqqqqqqdddddddddddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssoooooooooooooooooooooo...

output:

39639

result:

ok single line: '39639'

Test #3:

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

input:

1000 82508
77548 11366 41959 92623 12754 24025 69335 82809 10717 2487 20842 21597 79490 55616 4586 81371 61068 60639 38689 99285 67058 4417 48118 92298 48938 46998
fswgxhmntgjmxddxuxddxmjgtnmhxgwuwgxhmntgjmxddxuxddxmjgtnmhxgwuwgxhmntgjmxddxuxddxmjgtnmhxgwuwgxhmntgjmxddxuxddxmjgtnmhxgwuwgxhmntgjmxddx...

output:

5152476

result:

ok single line: '5152476'

Test #4:

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

input:

1000 81447
73552 15604 67150 50813 61186 62462 95570 13768 1915 12710 9768 10234 73803 67198 83028 62207 7498 72453 18426 76800 20581 66504 49434 7136 9199 40151
jdxxltlxxdjtjdxxltuhsbscjqqgdoyodgqqjcsbshuyuhsbscjqqgdoyodgqqjcsbshuyuhsbscjqqgdoyodgqqjcsbshuyuhsbscjqqgdoyodgqqjcsbshuyuhsbscjqqgdoyodg...

output:

4700857

result:

ok single line: '4700857'

Test #5:

score: 10
Accepted
time: 3ms
memory: 14412kb

input:

97366 425
238 96 326 413 643 743 806 601 213 8 229 585 852 183 887 272 137 891 480 337 135 411 265 906 807 382
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:

82531

result:

ok single line: '82531'

Test #6:

score: 10
Accepted
time: 3ms
memory: 14012kb

input:

100000 33379
12170 1675 69834 14368 91570 82932 66141 88159 4220 35820 24836 1083 77102 4471 78735 61628 53746 58134 40036 49369 65424 60061 79771 76791 91398 8101
imqqzaazqqmiimqqzaazqqmiimqqzakuochddhcoukkuochddhcoukkuochddhcoukkuochddhcoukkuochddhcoukkuochddhcoukkuochddhcoukkuochddhcoukkuochddhco...

output:

8203706

result:

ok single line: '8203706'

Test #7:

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

input:

100000 9107925
3181820 1305477 3152716 3739224 5572782 7916058 6479616 5154334 6622906 5541248 2719333 384761 3475969 4897963 6983868 175635 6509182 3008693 8373041 5777658 7480682 1658648 2725231 3311916 6180881 2740645
mjsgonduqaaqudnogsjmxiddixxiddixxiddixxiddixxiddixxiddixxiddixxiddixxiddixxiddi...

output:

933701481

result:

ok single line: '933701481'

Test #8:

score: 10
Accepted
time: 4ms
memory: 48364kb

input:

940823 71
102 70 3 282 34 642 912 683 628 633 870 57 395 952 427 275 323 655 720 960 557 114 417 354 557 554
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy...

output:

19337

result:

ok single line: '19337'

Test #9:

score: 10
Accepted
time: 8ms
memory: 41800kb

input:

1000000 80005
23657 44948 43486 12462 38795 28137 60947 38872 76125 27490 97511 91032 95028 17525 64016 68451 91721 63645 18338 55030 89004 15169 95322 26813 19323 44805
tccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttccttc...

output:

32904829

result:

ok single line: '32904829'

Test #10:

score: 10
Accepted
time: 14ms
memory: 44044kb

input:

1000000 743705502
203355312 642593104 49509407 833553504 721765697 645923593 987676530 855140950 875859311 522957598 441082466 49068898 921312225 548185354 505533262 26737495 674175585 995483029 131477261 936989048 613365908 712282356 798743656 807929778 320579711 517544929
vhhvvhhvvhhvvhhvvhhvvhhvv...

output:

317604809969

result:

ok single line: '317604809969'