Submission #567723

#TimeUsernameProblemLanguageResultExecution timeMemory
567723maomao90Copy and Paste 3 (JOI22_copypaste3)C++17
0 / 100
3086 ms15452 KiB
#include <bits/stdc++.h> using namespace std; #define REP(i, j, k) for (int i = j; i < k; i++) #define RREP(i, j, k) for (int i = j; i >= k; i--) template <class T> bool mnto(T &a, const T b) {return a > b ? a = b, 1 : 0;} template <class T> bool mxto(T &a, const T b) {return a < b ? a = b, 1 : 0;} typedef long long ll; #define FI first #define SE second typedef pair<int, int> ii; typedef pair<ll, ll> pll; #define ALL(x) x.begin(), x.end() #define SZ(x) (int) x.size() #define pb push_back typedef vector<int> vi; typedef vector<ii> vii; typedef vector<ll> vll; #ifndef DEBUG #define cerr if(0) cerr #endif const int MAXN = 2505; const int INF = 1000000005; const ll LINF = 1000000000000000005; int n; string s; int a, b, c; ll dp[MAXN][MAXN]; int main() { #ifndef DEBUG ios::sync_with_stdio(0), cin.tie(0); #endif cin >> n; cin >> s; cin >> a >> b >> c; RREP (i, n - 1, 0) { REP (j, i, n) { dp[i][j] = dp[i + 1][j] + a; int len = j - i + 1; REP (k, 1, len) { mnto(dp[i][j], b + dp[i][i + k - 1] + (ll) (len / k) * c + (ll) (len % k) * a); } cerr << i << ' ' << j << ": " << dp[i][j] << '\n'; } } cout << dp[0][n - 1] << '\n'; 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...