博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#592. 投放点的选择
阅读量:5291 次
发布时间:2019-06-14

本文共 1471 字,大约阅读时间需要 4 分钟。

【题目描述】:

ZL王国有一条母亲河,沿河有N个农庄,ZL王国的农产品都是出产自这N个农庄。为了抵制黑心的农贩子,这次ZL国王决定由王国统一收购,并给出了让农户非常满意的价格,甚至国王还下旨运输路费王国报销。这N个农庄主非常高兴,决定满载货船赶往收购点。

可是王国的国库空虚,勉强够收购农产品,至于建临时收购点和报销运输费的钱……

ZL国王拿出了自己的私房钱,含泪对着你说:“万能的IOer,请你帮我算算选择哪些农庄建立收购点,可以让我出最少的钱。”

ZL国王递给你一个表格,上面记录了,相邻农庄运输的费用以及在不同农庄建立临时收购点的费用。

简易题面:N个农庄(1~N)在一条线上,依次给定相邻农庄间运输费用和在不同农庄建立临时收购点的费用,总费用即每个农庄前往运输费用最少的收购点和所有收购点建立费用之和。)

【输入描述】:

第一行包含1 个正整数n。

第二行包含n 个自然数,依次表示N个农庄建立收购点的代价cost。

以下n-1 行每行一个整数w,依次表示在农庄i和i+1间运输费用w。

【输出描述】:

输出1 个整数,表示最小代价。

【样例输入】:

81 3 3 8 5 5 4 43199980

【样例输出】:

27

【样例说明】:

样例中在1、2、4、5、6、7建立收购点。

【时间限制、数据范围及描述】:

时间:1s 空间:512M

30%的数据:n≤10;

70%的数据:n≤500;

100%的数据:1≤n≤5000;0≤w,cost≤5000;

 

 

#include
#include
#include
#include
#include
#include
using namespace std;int dis[5610][5610],w[5610],n;long long f[5610],ans;int read(){ int a=0,b=1; char ch=getchar(); while((ch<48||ch>57)&&ch!='-'){ ch=getchar(); } if(ch=='-'){ b=-1; ch=getchar(); } while(ch<48||ch>57){ ch=getchar(); } while(ch>47&&ch<58){ a=a*10+ch-48; ch=getchar(); } return a*b;}int main(){ long long s1,s2,k=0; n=read(); for(int i=1;i<=n;i++){ w[i]=read(); } for(int i=2;i<=n;i++){ dis[i-1][i]=read(); for(int j=i-1;j>=1;j--){ dis[j][i]=dis[j+1][i]+dis[j][j+1]; } } for(int i=1;i<=n;i++){ for(int j=1;j
=1;i--){ s1+=dis[i][n]; ans=min(ans,f[i]+s1); } printf("%lld",ans); return 0;}

  

转载于:https://www.cnblogs.com/xiongchongwen/p/11582035.html

你可能感兴趣的文章
ubuntu 16.04 开机脚本
查看>>
 VS2012 C#调用C++ dll
查看>>
TCL:表格(xls)中写入数据
查看>>
SQL SERVER 2005中如何获取日期(一个月的最后一日、一年的第一日等等)
查看>>
django 学习笔记(转)
查看>>
控制台程序秒变Windows服务(Topshelf)
查看>>
字节流与字符流的区别详解
查看>>
20141026--娱乐-箱子
查看>>
自定义分页
查看>>
Oracle事务
查看>>
任意输入10个int类型数据,把这10个数据首先按照排序输出,挑出这些数据里面的素数...
查看>>
String类中的equals方法总结(转载)
查看>>
图片问题
查看>>
bash使用规则
查看>>
AVL数
查看>>
第二章练习
查看>>
ajax2.0
查看>>
C#时间截
查看>>
C语言程序设计II—第九周教学
查看>>
C# 获取系统时间及时间格式转换
查看>>