Submission #719645

#TimeUsernameProblemLanguageResultExecution timeMemory
719645Abrar_Al_SamitCopy and Paste 3 (JOI22_copypaste3)C++17
25 / 100
3049 ms788 KiB
#include<bits/stdc++.h> using namespace std; const int nax = 203; const long long INF = 1e18; int n; string s; long long A, B, C; long long dp[nax][nax]; long long solve(int i, int j) { long long &ret = dp[i][j]; if(ret!=-1) return ret; if(i==j) return A; ret = min((j-i+1) * A, solve(i+1, j) + A); for(int k=1; k<j-i+1; ++k) { int cnt = 0; int p = i; while(p+k-1<=j) { if(s.substr(i, k)==s.substr(p, k)) { ++cnt; p += k; } else ++p; } long long cur = solve(i, i+k-1) + B; cur += cnt * C; cur += ((j-i+1) - cnt * k) * A; ret = min(ret, cur); } return ret; } void PlayGround() { cin>>n>>s>>A>>B>>C; memset(dp, -1, sizeof dp); s = '@' + s; cout<<solve(1, n)<<'\n'; // cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); PlayGround(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...