首页 > 其他 > 详细

线性DP P1269

时间:2017-10-29 18:22:31      阅读:348      评论:0      收藏:0      [点我收藏+]

 

见注释

注意理解sum表示含义以及f[i][j]和sum联系

#include<cstdio>

#include<algorithm>

#include<cstring>

#define F(i,s,e) for(int i=s;i<=e;i++)

#define D(i,e,s) for(int i=e;i>=s;i--)

using namespace std;

 

int n,m;

int f[520][520];//zzh beser

int sum[520][520];

int h[520],temp;...

P1269

见注释

注意理解sum表示含义以及f[i][j]和sum联系

#include<cstdio>

#include<algorithm>

#include<cstring>

#define F(i,s,e) for(int i=s;i<=e;i++)

#define D(i,e,s) for(int i=e;i>=s;i--)

using namespace std;

 

int n,m;

int f[520][520];//zzh beser

int sum[520][520];

int h[520],temp;

 

int main()

{

    scanf("%d%d",&n,&m);

    F(i,1,n)

        scanf("%d",&h[i]);

    memset(f,10000,sizeof(f));

    F(i,1,n)//求任意i~j区间内的不和谐度

    {

        F(j,i,n)

        {

            temp=0;

            F(k,i,j)

                temp+=h[k];

            sum[i][j]=temp*(j-i+1-temp);

        }

        f[1][i]=sum[1][i];//到i的不和谐度就是1~i不和谐度

    }

    F(i,2,m)

        F(j,i,n)

            F(k,i-1,j)

                f[i][j]=min(f[i][j],f[i-1][k]+sum[k+1][j]);

    printf("%d\n",f[m][n]); 

    return 0;

线性DP P1269

原文:http://www.cnblogs.com/Murs/p/7750500.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!