Submission #901563

#TimeUsernameProblemLanguageResultExecution timeMemory
901563Tuanlinh123Chorus (JOI23_chorus)C++17
40 / 100
91 ms4732 KiB
#include<bits/stdc++.h> #define ll long long #define pll pair<ll, ll> #define pb push_back #define mp make_pair #define fi first #define se second #define ld long double using namespace std; const ll inf=2e9, maxn=1e3; ll pre[maxn], to[maxn]; ll n, k, a[maxn], dp[maxn][maxn]; ll cost(ll j, ll i) { if (to[j]>i) return 0; return (pre[i]-i*j)-(pre[to[j]-1]-(to[j]-1)*j); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; string s; cin >> s; ll x=0, y=0, crr=1; for (ll i=0; i<n*2; i++) { if (s[i]=='A') x++, pre[x]=pre[x-1]+y; else y++; } for (ll i=1; i<=n; i++) while (crr<=pre[i]-pre[i-1]) to[crr]=i, crr++; while (crr<=n) to[crr]=n+1, crr++; for (ll i=1; i<=n; i++) if (to[i]<=i) to[i]=i+1; for (ll i=0; i<=k; i++) for (ll j=0; j<=n; j++) dp[i][j]=inf*inf; dp[0][0]=0; for (ll i=1; i<=k; i++) for (ll j=1; j<=n; j++) for (ll z=0; z<j; z++) dp[i][j]=min(dp[i][j], dp[i-1][z]+cost(z, j)); cout << dp[k][n]; }
#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...