博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cogs 362. [CEOI2004]锯木厂选址
阅读量:6501 次
发布时间:2019-06-24

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

                ★★★   输入文件:two.in   输出文件:two.out   简单对比

                  时间限制:0.1 s   内存限制:32 MB

从山顶上到山底下沿着一条直线种植了n棵老树。当地的政府决定把他们砍下来。为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂。

木材只能按照一个方向运输:朝山下运。山脚下有一个锯木厂。另外两个锯木厂将新修建在山路上。你必须决定在哪里修建两个锯木厂,使得传输的费用总和最小。假定运输每公斤木材每米需要一分钱。

输入

输入的第一行为一个正整数n——树的个数(2≤n≤20 000)。树从山顶到山脚按照1,2……n标号。接下来n行,每行有两个正整数(用空格分开)。第i+1行含有:wi——第i棵树的重量(公斤为单位)和 di——第i棵树和第i+1棵树之间的距离,1≤wi ≤10 000,0≤di≤10 000。最后一个数dn,表示第n棵树到山脚的锯木厂的距离。保证所有树运到山脚的锯木厂所需要的费用小于2000 000 000分。

输出

输出只有一行一个数:最小的运输费用。

样例

输入

9

1 2
2 1
3 3
1 1
3 2
1 6
2 1
1 2
1 1

输出

26

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 using namespace std;10 typedef long long LL;11 typedef double db;12 const int maxn=20010;13 LL ANS=1e15;14 int N,w[maxn],d[maxn],Sw[maxn],Sd[maxn],cost[maxn];15 int Q[maxn],head,tail=-1; 16 inline double calc(int j1,int j2){17 return ((db)Sw[j1]*(db)Sd[j1]-(db)Sw[j2]*(db)Sd[j2])/((db)Sw[j1]-(db)Sw[j2]);18 }19 inline int All(int j,int i){20 return cost[i]-cost[j-1]-Sw[j-1]*(Sd[i]-Sd[j-1]);21 }22 inline LL ask_ans(int j,int i){23 return (LL)cost[j]+(LL)All(j+1,i)+(LL)All(i+1,N+1);24 }25 int main(){26 //freopen("two.in","r",stdin);27 //freopen("two.out","w",stdout);28 scanf("%d",&N);29 for(int i=1;i<=N;i++){30 scanf("%d%d",&w[i],&d[i]);31 Sw[i]=Sw[i-1]+w[i];32 Sd[i+1]=Sd[i]+d[i];33 cost[i]=cost[i-1]+Sw[i-1]*d[i-1];34 }35 cost[N+1]=cost[N]+Sw[N]*d[N];36 Sw[N+1]=Sw[N];37 for(int i=1;i<=N;i++){38 while(head
<=Sd[i]){39 head++;40 }41 ANS=min(ANS,ask_ans(Q[head],i));42 while(head
calc(Q[tail],i)){43 tail--;44 }45 Q[++tail]=i;46 }47 printf("%lld",ANS);48 return 0;49 }

 

  

 

转载于:https://www.cnblogs.com/CXCXCXC/p/5416158.html

你可能感兴趣的文章
基础篇9-python基本数据结构-列表
查看>>
PHP学习笔记 第八讲 Mysql.简介和创建新的数据库
查看>>
【git】git入门之把自己的项目上传到github
查看>>
js获取鼠标位置
查看>>
2016.8.11 DataTable合并及排除重复方法
查看>>
php 魔术方法 说明
查看>>
Mysql
查看>>
POJ-1860-Currency Exchange
查看>>
跨越企业的“中等收入陷阱”
查看>>
Android 开发者必知的开发资源
查看>>
软件工程技术基础-(软件复用技术)
查看>>
给django视图类添加装饰器
查看>>
DVWA默认用户名密码
查看>>
简述 clearfix 的原理
查看>>
【Project Euler】530 GCD of Divisors 莫比乌斯反演
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
获取文件最后修改时间的VC代码
查看>>
ThinkPHP子类继承Controller类的注意事项
查看>>
iphone UIView的一些基本方法理解
查看>>
sys.check_constraints
查看>>