ACM PKU 1160 Post Office 经典动态规划

http://acm.pku.edu.cn/JudgeOnline/problem?id=1160
用opt[i][j]记录把前i个邮局建到前j个村庄中的最优解
用cost[i][j]记录所有在i到j村庄中,建1个邮局的最小代价。显然邮局应该设到中点。

让前i个邮局覆盖前j个村庄,第i+1个邮局覆盖第j+1至j+k个村庄(j+k<=n),则状态转移方程为
 opt[i+1][j+k]=min{opt[i][j]+cost[j+1][j+k];}  (k+j<=n)


#include"stdio.h"
long cost[301][301];
long opt[301][301];        //把前i个邮局建到前j个村庄中的最优解
int v[301];


void pre(int m,int n)
{
    
int i,j,mid,k;              //记录所有在i到j村庄中,建一个邮局的最小代价。显然邮局应该设到中点。
    for (i=1;i<=m;i++)
        
for(j=i;j<=m;j++)         //j>=i
        {
            cost[i][j]
=0;
            mid
=(i+j)/2;
            
for(k=i;k<=mid;k++)
                cost[i][j]
+=v[mid]-v[k];
            
for(k=mid+1;k<=j;k++)
                cost[i][j]
+=v[k]-v[mid];
        }


}

void main()
{
    
    
int i,j,k;
    
int m,n;
    
    scanf(
"%d%d",&m,&n);
    
for(i=1;i<=m;i++)
        scanf(
"%d",&v[i]);
    pre(m,n);


    
for(i=0;i<=n;i++)
        
for(j=0;j<=m;j++)
            opt[i][j]
=3000000;
    opt[
0][0]=0;
     
for(i=0;i<=n;i++)
       
for(j=0;j<=m;j++)
           
if(opt[i][j]<3000000)
        
{
            
for(k=1;j+k<=m;k++)
                
if(opt[i+1][j+k]>opt[i][j]+cost[j+1][j+k])       //状态转移.   让前i个邮局覆盖前j个村庄,第i+1个邮局覆盖第j+1到第j+k个村庄。
                   opt[i+1][j+k]=opt[i][j]+cost[j+1][j+k];
        }

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

}

posted on 2007-09-22 00:54 流牛ζ木马 阅读(2800) 评论(5)  编辑 收藏 引用

评论

# re: ACM PKU 1160 Post Office 经典动态规划 2008-05-03 03:43 lilong

很支持你。。。
我是个初学者。。在你这里受益匪浅呀。。
希望能继续受到你的帮助。。
所以希望你继续吧这个博客进行到底、。。。
呵呵。。。  回复  更多评论   

# re: ACM PKU 1160 Post Office 经典动态规划 2008-09-03 20:59 Linzertorte

谢谢您 了。  回复  更多评论   

# re: ACM PKU 1160 Post Office 经典动态规划 2010-08-08 11:17 zhoubizhang

受菜鸟膜拜一次  回复  更多评论   

# re: ACM PKU 1160 Post Office 经典动态规划 2010-08-11 22:02 jimmy

菜鸟路过。。献花  回复  更多评论   

# re: ACM PKU 1160 Post Office 经典动态规划 2010-10-26 17:43 DeadCoder

Just Orz  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

公告

MY Email/MSN :mars1021@163.com QQ : 27402040 流牛ζ木马

常用链接

留言簿(6)

随笔档案

相册

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜