Submission #714422

# Submission time Handle Problem Language Result Execution time Memory
714422 2023-03-24T10:54:26 Z 089487 Copy and Paste 3 (JOI22_copypaste3) C++14
62 / 100
3000 ms 384792 KB
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx,popcnt,sse4,abm")
#include<bits/stdc++.h>
#define int long long
#define quick ios::sync_with_stdio(0);cin.tie(0);
#define rep(x,a,b) for(int x=a;x<=b;x++)
#define repd(x,a,b) for(int x=a;x>=b;x--)
#define lowbit(x) (x&-x)
#define sz(x) (int)(x.size())
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define mp make_pair
#define eb emplace_back
using namespace std;
typedef pair<int,int> pii;
void debug(){
    cout<<"\n";
}
template <class T,class ... U >
void debug(T a, U ... b){
    cout<<a<<" ",debug(b...);
}
const int N=25e2+7;
const int INF=1e18;
const int p=29;
const int Mod=462'779'347'772'851;
int pref[N][N];
int dp[N][N];
string s;
const int M=1e7;
vector<int> v[M];
void build(int n){
	rep(i,1,n){
		rep(j,i,n){
			pref[i][j]=pref[i][j-1]*p%Mod+s[j-1]-'a'+2;
			if(pref[i][j]>=Mod) pref[i][j]-=Mod;
		}
	}
}
int nxt[N];
bool vis[M];
signed main(){
	quick
 
	int n;
	cin>>n;
	cin>>s;
	build(n);
	int a,b,c;
	cin>>a>>b>>c;
	map<int,int > mx;
	int cnt=1;
	rep(i,1,n){
		rep(j,i,n){
			dp[i][j]=(j-i+1)*a;
			if(!mx[pref[i][j]]) mx[pref[i][j]]=cnt++;
			v[mx[pref[i][j]]].eb(i);
		}
	}
	rep(L,1,n){
		fill(nxt,nxt+n+1,-1);
		rep(l,1,n-L+1){
			int r=l+L-1;
			int qx=mx[pref[l][r]];
			int n2=sz(v[qx]);
			if(l<r) dp[l][r]=min({dp[l][r],dp[l][r-1]+a,dp[l+1][r]+a});
			if(!vis[qx]&&n2!=1){
				int _r=0;
				int n2=sz(v[qx]);
				rep(i,0,n2-1){
					while(_r<n2&&v[qx][_r]<=v[qx][i]+L-1) _r++;
					nxt[v[qx][i]]=(_r>=n2 ? -1 : v[qx][_r]);
				}
				vis[qx]=true;
			}
			int px=nxt[l];
			int pst=1;
			while(px!=-1){
				dp[l][px+L-1]=min(dp[l][px+L-1],(px-l-pst*L)*a+pst*c+b+c+dp[l][r]);
				pst++;
				px=nxt[px];
			}
		}
	}
	cout<<dp[1][n]<<"\n";
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 120 ms 235212 KB Output is correct
2 Correct 123 ms 235180 KB Output is correct
3 Correct 125 ms 235200 KB Output is correct
4 Correct 118 ms 235084 KB Output is correct
5 Correct 130 ms 235252 KB Output is correct
6 Correct 125 ms 235084 KB Output is correct
7 Correct 119 ms 235176 KB Output is correct
8 Correct 121 ms 235080 KB Output is correct
9 Correct 121 ms 235148 KB Output is correct
10 Correct 117 ms 235092 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 119 ms 235288 KB Output is correct
2 Correct 128 ms 235180 KB Output is correct
3 Correct 504 ms 294184 KB Output is correct
4 Correct 587 ms 301936 KB Output is correct
5 Correct 617 ms 312080 KB Output is correct
6 Correct 709 ms 323764 KB Output is correct
7 Correct 841 ms 335768 KB Output is correct
8 Correct 830 ms 335892 KB Output is correct
9 Correct 871 ms 335896 KB Output is correct
10 Correct 126 ms 235236 KB Output is correct
11 Correct 129 ms 235148 KB Output is correct
12 Correct 124 ms 235076 KB Output is correct
13 Correct 130 ms 235180 KB Output is correct
14 Correct 124 ms 235136 KB Output is correct
15 Correct 122 ms 235236 KB Output is correct
16 Correct 123 ms 235412 KB Output is correct
17 Correct 140 ms 235080 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 120 ms 235212 KB Output is correct
2 Correct 123 ms 235180 KB Output is correct
3 Correct 125 ms 235200 KB Output is correct
4 Correct 118 ms 235084 KB Output is correct
5 Correct 130 ms 235252 KB Output is correct
6 Correct 125 ms 235084 KB Output is correct
7 Correct 119 ms 235176 KB Output is correct
8 Correct 121 ms 235080 KB Output is correct
9 Correct 121 ms 235148 KB Output is correct
10 Correct 117 ms 235092 KB Output is correct
11 Correct 126 ms 235300 KB Output is correct
12 Correct 124 ms 235284 KB Output is correct
13 Correct 125 ms 235308 KB Output is correct
14 Correct 123 ms 235228 KB Output is correct
15 Correct 121 ms 235264 KB Output is correct
16 Correct 127 ms 235240 KB Output is correct
17 Correct 124 ms 235272 KB Output is correct
18 Correct 120 ms 235168 KB Output is correct
19 Correct 123 ms 235268 KB Output is correct
20 Correct 128 ms 235200 KB Output is correct
21 Correct 128 ms 235372 KB Output is correct
22 Correct 124 ms 235328 KB Output is correct
23 Correct 121 ms 235552 KB Output is correct
24 Correct 122 ms 235400 KB Output is correct
25 Correct 134 ms 235444 KB Output is correct
26 Correct 146 ms 235332 KB Output is correct
27 Correct 150 ms 235420 KB Output is correct
28 Correct 169 ms 235384 KB Output is correct
29 Correct 150 ms 235440 KB Output is correct
30 Correct 160 ms 235368 KB Output is correct
31 Correct 152 ms 235480 KB Output is correct
32 Correct 145 ms 235516 KB Output is correct
33 Correct 148 ms 235444 KB Output is correct
34 Correct 125 ms 235164 KB Output is correct
35 Correct 122 ms 235212 KB Output is correct
36 Correct 121 ms 235172 KB Output is correct
37 Correct 121 ms 235200 KB Output is correct
38 Correct 120 ms 235144 KB Output is correct
39 Correct 123 ms 235420 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 120 ms 235212 KB Output is correct
2 Correct 123 ms 235180 KB Output is correct
3 Correct 125 ms 235200 KB Output is correct
4 Correct 118 ms 235084 KB Output is correct
5 Correct 130 ms 235252 KB Output is correct
6 Correct 125 ms 235084 KB Output is correct
7 Correct 119 ms 235176 KB Output is correct
8 Correct 121 ms 235080 KB Output is correct
9 Correct 121 ms 235148 KB Output is correct
10 Correct 117 ms 235092 KB Output is correct
11 Correct 126 ms 235300 KB Output is correct
12 Correct 124 ms 235284 KB Output is correct
13 Correct 125 ms 235308 KB Output is correct
14 Correct 123 ms 235228 KB Output is correct
15 Correct 121 ms 235264 KB Output is correct
16 Correct 127 ms 235240 KB Output is correct
17 Correct 124 ms 235272 KB Output is correct
18 Correct 120 ms 235168 KB Output is correct
19 Correct 123 ms 235268 KB Output is correct
20 Correct 128 ms 235200 KB Output is correct
21 Correct 128 ms 235372 KB Output is correct
22 Correct 124 ms 235328 KB Output is correct
23 Correct 121 ms 235552 KB Output is correct
24 Correct 122 ms 235400 KB Output is correct
25 Correct 134 ms 235444 KB Output is correct
26 Correct 146 ms 235332 KB Output is correct
27 Correct 150 ms 235420 KB Output is correct
28 Correct 169 ms 235384 KB Output is correct
29 Correct 150 ms 235440 KB Output is correct
30 Correct 160 ms 235368 KB Output is correct
31 Correct 152 ms 235480 KB Output is correct
32 Correct 145 ms 235516 KB Output is correct
33 Correct 148 ms 235444 KB Output is correct
34 Correct 125 ms 235164 KB Output is correct
35 Correct 122 ms 235212 KB Output is correct
36 Correct 121 ms 235172 KB Output is correct
37 Correct 121 ms 235200 KB Output is correct
38 Correct 120 ms 235144 KB Output is correct
39 Correct 123 ms 235420 KB Output is correct
40 Correct 132 ms 236236 KB Output is correct
41 Correct 127 ms 237456 KB Output is correct
42 Correct 143 ms 238796 KB Output is correct
43 Correct 142 ms 238864 KB Output is correct
44 Correct 141 ms 238896 KB Output is correct
45 Correct 135 ms 238932 KB Output is correct
46 Correct 143 ms 238936 KB Output is correct
47 Correct 125 ms 237796 KB Output is correct
48 Correct 133 ms 238252 KB Output is correct
49 Correct 136 ms 238388 KB Output is correct
50 Correct 135 ms 238404 KB Output is correct
51 Correct 134 ms 238180 KB Output is correct
52 Correct 135 ms 238252 KB Output is correct
53 Correct 139 ms 238940 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 120 ms 235212 KB Output is correct
2 Correct 123 ms 235180 KB Output is correct
3 Correct 125 ms 235200 KB Output is correct
4 Correct 118 ms 235084 KB Output is correct
5 Correct 130 ms 235252 KB Output is correct
6 Correct 125 ms 235084 KB Output is correct
7 Correct 119 ms 235176 KB Output is correct
8 Correct 121 ms 235080 KB Output is correct
9 Correct 121 ms 235148 KB Output is correct
10 Correct 117 ms 235092 KB Output is correct
11 Correct 126 ms 235300 KB Output is correct
12 Correct 124 ms 235284 KB Output is correct
13 Correct 125 ms 235308 KB Output is correct
14 Correct 123 ms 235228 KB Output is correct
15 Correct 121 ms 235264 KB Output is correct
16 Correct 127 ms 235240 KB Output is correct
17 Correct 124 ms 235272 KB Output is correct
18 Correct 120 ms 235168 KB Output is correct
19 Correct 123 ms 235268 KB Output is correct
20 Correct 128 ms 235200 KB Output is correct
21 Correct 128 ms 235372 KB Output is correct
22 Correct 124 ms 235328 KB Output is correct
23 Correct 121 ms 235552 KB Output is correct
24 Correct 122 ms 235400 KB Output is correct
25 Correct 134 ms 235444 KB Output is correct
26 Correct 146 ms 235332 KB Output is correct
27 Correct 150 ms 235420 KB Output is correct
28 Correct 169 ms 235384 KB Output is correct
29 Correct 150 ms 235440 KB Output is correct
30 Correct 160 ms 235368 KB Output is correct
31 Correct 152 ms 235480 KB Output is correct
32 Correct 145 ms 235516 KB Output is correct
33 Correct 148 ms 235444 KB Output is correct
34 Correct 125 ms 235164 KB Output is correct
35 Correct 122 ms 235212 KB Output is correct
36 Correct 121 ms 235172 KB Output is correct
37 Correct 121 ms 235200 KB Output is correct
38 Correct 120 ms 235144 KB Output is correct
39 Correct 123 ms 235420 KB Output is correct
40 Correct 132 ms 236236 KB Output is correct
41 Correct 127 ms 237456 KB Output is correct
42 Correct 143 ms 238796 KB Output is correct
43 Correct 142 ms 238864 KB Output is correct
44 Correct 141 ms 238896 KB Output is correct
45 Correct 135 ms 238932 KB Output is correct
46 Correct 143 ms 238936 KB Output is correct
47 Correct 125 ms 237796 KB Output is correct
48 Correct 133 ms 238252 KB Output is correct
49 Correct 136 ms 238388 KB Output is correct
50 Correct 135 ms 238404 KB Output is correct
51 Correct 134 ms 238180 KB Output is correct
52 Correct 135 ms 238252 KB Output is correct
53 Correct 139 ms 238940 KB Output is correct
54 Correct 219 ms 249524 KB Output is correct
55 Correct 195 ms 256392 KB Output is correct
56 Correct 1136 ms 297764 KB Output is correct
57 Correct 1063 ms 298128 KB Output is correct
58 Correct 1038 ms 298232 KB Output is correct
59 Correct 1029 ms 298252 KB Output is correct
60 Correct 1030 ms 298440 KB Output is correct
61 Correct 708 ms 275736 KB Output is correct
62 Correct 241 ms 257280 KB Output is correct
63 Correct 910 ms 286976 KB Output is correct
64 Correct 917 ms 287624 KB Output is correct
65 Correct 781 ms 276456 KB Output is correct
66 Correct 794 ms 276528 KB Output is correct
67 Correct 1000 ms 298444 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 120 ms 235212 KB Output is correct
2 Correct 123 ms 235180 KB Output is correct
3 Correct 125 ms 235200 KB Output is correct
4 Correct 118 ms 235084 KB Output is correct
5 Correct 130 ms 235252 KB Output is correct
6 Correct 125 ms 235084 KB Output is correct
7 Correct 119 ms 235176 KB Output is correct
8 Correct 121 ms 235080 KB Output is correct
9 Correct 121 ms 235148 KB Output is correct
10 Correct 117 ms 235092 KB Output is correct
11 Correct 119 ms 235288 KB Output is correct
12 Correct 128 ms 235180 KB Output is correct
13 Correct 504 ms 294184 KB Output is correct
14 Correct 587 ms 301936 KB Output is correct
15 Correct 617 ms 312080 KB Output is correct
16 Correct 709 ms 323764 KB Output is correct
17 Correct 841 ms 335768 KB Output is correct
18 Correct 830 ms 335892 KB Output is correct
19 Correct 871 ms 335896 KB Output is correct
20 Correct 126 ms 235236 KB Output is correct
21 Correct 129 ms 235148 KB Output is correct
22 Correct 124 ms 235076 KB Output is correct
23 Correct 130 ms 235180 KB Output is correct
24 Correct 124 ms 235136 KB Output is correct
25 Correct 122 ms 235236 KB Output is correct
26 Correct 123 ms 235412 KB Output is correct
27 Correct 140 ms 235080 KB Output is correct
28 Correct 126 ms 235300 KB Output is correct
29 Correct 124 ms 235284 KB Output is correct
30 Correct 125 ms 235308 KB Output is correct
31 Correct 123 ms 235228 KB Output is correct
32 Correct 121 ms 235264 KB Output is correct
33 Correct 127 ms 235240 KB Output is correct
34 Correct 124 ms 235272 KB Output is correct
35 Correct 120 ms 235168 KB Output is correct
36 Correct 123 ms 235268 KB Output is correct
37 Correct 128 ms 235200 KB Output is correct
38 Correct 128 ms 235372 KB Output is correct
39 Correct 124 ms 235328 KB Output is correct
40 Correct 121 ms 235552 KB Output is correct
41 Correct 122 ms 235400 KB Output is correct
42 Correct 134 ms 235444 KB Output is correct
43 Correct 146 ms 235332 KB Output is correct
44 Correct 150 ms 235420 KB Output is correct
45 Correct 169 ms 235384 KB Output is correct
46 Correct 150 ms 235440 KB Output is correct
47 Correct 160 ms 235368 KB Output is correct
48 Correct 152 ms 235480 KB Output is correct
49 Correct 145 ms 235516 KB Output is correct
50 Correct 148 ms 235444 KB Output is correct
51 Correct 125 ms 235164 KB Output is correct
52 Correct 122 ms 235212 KB Output is correct
53 Correct 121 ms 235172 KB Output is correct
54 Correct 121 ms 235200 KB Output is correct
55 Correct 120 ms 235144 KB Output is correct
56 Correct 123 ms 235420 KB Output is correct
57 Correct 132 ms 236236 KB Output is correct
58 Correct 127 ms 237456 KB Output is correct
59 Correct 143 ms 238796 KB Output is correct
60 Correct 142 ms 238864 KB Output is correct
61 Correct 141 ms 238896 KB Output is correct
62 Correct 135 ms 238932 KB Output is correct
63 Correct 143 ms 238936 KB Output is correct
64 Correct 125 ms 237796 KB Output is correct
65 Correct 133 ms 238252 KB Output is correct
66 Correct 136 ms 238388 KB Output is correct
67 Correct 135 ms 238404 KB Output is correct
68 Correct 134 ms 238180 KB Output is correct
69 Correct 135 ms 238252 KB Output is correct
70 Correct 139 ms 238940 KB Output is correct
71 Correct 219 ms 249524 KB Output is correct
72 Correct 195 ms 256392 KB Output is correct
73 Correct 1136 ms 297764 KB Output is correct
74 Correct 1063 ms 298128 KB Output is correct
75 Correct 1038 ms 298232 KB Output is correct
76 Correct 1029 ms 298252 KB Output is correct
77 Correct 1030 ms 298440 KB Output is correct
78 Correct 708 ms 275736 KB Output is correct
79 Correct 241 ms 257280 KB Output is correct
80 Correct 910 ms 286976 KB Output is correct
81 Correct 917 ms 287624 KB Output is correct
82 Correct 781 ms 276456 KB Output is correct
83 Correct 794 ms 276528 KB Output is correct
84 Correct 1000 ms 298444 KB Output is correct
85 Execution timed out 3071 ms 384792 KB Time limit exceeded
86 Halted 0 ms 0 KB -