Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
149093 | 唐钧 | 双色马 | C++ | 解答错误 | 60 | 16 MS | 260 KB | 501 | 2024-05-25 16:04:03 |
#include<bits/stdc++.h> #define dp(i,j) dp[(i)%2][j] using namespace std; int n,k,dp[1097][1097],b[1097]; int main() { cin>>n>>k; for(int i=0;i<2;i++) { for(int j=i+1;j<=500;j++) { dp[i][j]=1<<30; } } for(int i=1,x;i<=n;i++) { cin>>x; b[i]=b[i-1]+x; } for(int i=1;i<=k;i++) { for(int j=i;j<=n-(k-i);j++) { for(int k=i-1;k<j;k++) { dp(i,j)=min(dp(i,j),dp(i-1,k)+(b[j]-b[k])*(j-k-(b[j]-b[k]))); } } } cout<<dp[k][n]; return 0; }