动态规划训练之十五

https://www.luogu.org/problem/P2112

相信都看一眼就知道这是一道很水的dp

但是这代码不是我写的,毕竟我太蒻了

code:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 1005
#define MAXK 105
using namespace std;
int n,k;
double a[MAXN],f[MAXN][MAXK];
double s[MAXN];
int main(){
    scanf("%d%d",&n,&k);
    double ave=0;
    for(int i=1;i<=n;i++){
        char str[25];
        scanf("%s",str); 
        a[i]=strlen(str);
        ave+=a[i]; 
        s[i]=s[i-1]+a[i];
    }
    ave/=k;
    for(int i=1;i<=n;i++)
     for(int j=2;j<=k;j++)
      f[i][j]=0x7fffffff; 
      for(int i=1;i<=n;i++) f[i][1]=(s[i]-ave)*(s[i]-ave)/k;
    for(int j=2;j<=k;j++)
     for(int i=j;i<=n;i++)
      for(int l=1;l<=i-1;l++) 
       f[i][j]=min(f[i][j],f[l][j-1]+(s[i]-s[l]-ave)*(s[i]-s[l]-ave)/k);
        printf("%.1lf",f[n][k]);

       return 0;
}
posted @ 2019-10-20 21:07  wzx_believer  阅读(80)  评论(0编辑  收藏  举报