Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
152359 | 吴悠 | 双色马 | C++ | 通过 | 100 | 27 MS | 1236 KB | 511 | 2024-06-23 10:46:22 |
#include<iostream> #include<cstring> using namespace std; int sum[501],dp[501][501]; bool a[501]; int main(){ int n,k; cin>>n>>k; memset(dp,0x3f,sizeof(dp)); for(int i=1;i<=n;i++){ cin>>a[i]; sum[i]+=sum[i-1]+a[i]; } for(int i=1;i<=n;i++){ dp[i][1]=sum[i]*(i-sum[i]); } for(int j=2;j<=k;j++){ for(int i=j;i<=n;i++){ for(int t=j-1;t<=i-1;t++){ dp[i][j]=min(dp[t][j-1]+(sum[i]-sum[t])*(i-t-(sum[i]-sum[t])),dp[i][j]); } } } cout<<dp[n][k]<<endl; return 0; }