Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
149094 | 林泽豪 | 双色马 | C++ | 通过 | 100 | 14 MS | 264 KB | 481 | 2024-05-25 16:04:07 |
#include<bits/stdc++.h> using namespace std; const int N=600; #define dp(i,j) dp[(i)%2][j] int n,K,dp[3][N],b[N]; int main(){ cin>>n>>K; for(int i=1;i<=n;i++){ bool l; cin>>l; b[i]=b[i-1]+l; } for(int i=0; i<2; i++) for(int j=i+1; j<501; j++) dp[i][j]=1<<30; for(int i=1;i<=K;i++){ for(int j=1;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); }