URAL 1167

来源:互联网 发布:2000年代流行网络歌曲 编辑:程序博客网 时间:2024/06/01 09:58

f[i][j]为第i个马厩分配j匹马的最小冲突值。

#include<iostream>#include<cstdio>#include<cstring>#define INF 1<<20using namespace std;int f[505][505],a[501],s[501];int main(){int n,k;int minn;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){f[0][i]=INF;f[i][0]=INF;}f[0][0]=0;for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++){if(a[i]==1)s[i]=s[i-1]+1;elses[i]=s[i-1];}for(int i=1;i<=k;i++)for(int j=1;j<=n;j++){minn=INF;for(int d=0;d<=j;d++)if(minn>f[i-1][d]+(s[j]-s[d])*(j-d-(s[j]-s[d]))){minn=f[i-1][d]+(s[j]-s[d])*(j-d-(s[j]-s[d]));f[i][j]=minn;}}printf("%d\n",f[k][n]);return 0;}