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

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

编号山脚的树是1

w[i] 表示从1号到i号节点的树的总质量。

d[i] 表示第i棵树距离山脚的锯木厂的距离。

g[i] 表示从in棵树都运到i地的锯木厂所用的费用。

h[i] 表示从1i棵树都运到山底锯木厂所用的费用。

f[i] 表示中间的锯木厂建设在i处所用过的最小费用。

很容易写出朴素方程  f[i] = h[i-1] + g[j] + h[j-1] - h[i] - (w[j-1] - w[i])*d[i]

进行一下化简变换。

令t[i]=g[x]+h[x-1]

得到(t[x]-t[y])/(w[x-1]-w[y-1])>d[i]

注意当前你的i是倒着循环的,所以凸包要反着画,斜率之间的关系也因此而发生改变。

 

View Code
1 program wood(input,output); 2 var 3     h     :array[0..25000] of int64; 4     f,g   :array[0..25000] of int64; 5     w     :array[0..25000] of int64; 6     d     :array[0..25000] of int64; 7     q      :array[0..25000] of longint; 8     n        :longint; 9     answer:int64;10 procedure init;11 var12     i:longint;13 begin14     readln(n);15     for i:=n downto 1 do16         readln(w[i],d[i]);17 end;{
init }18 procedure change();19 var20 i:longint;21 begin22 for i:=1 to n do23 begin24 w[i]:=w[i-1]+w[i];25 d[i]:=d[i-1]+d[i];26 h[i]:=h[i-1]+(w[i]-w[i-1])*d[i];27 end;28 for i:=n downto 1 do29 g[i]:=g[i+1]+(w[n]-w[i])*(d[i+1]-d[i]);30 end;{
change }31 function K(x,y:longint):double;32 begin33 exit((g[x]+h[x-1]-g[y]-h[y-1])/(w[x-1]-w[y-1]));34 end;{
K }35 procedure main;36 var37 i :longint;38 head,tail:longint;39 bestK :double;40 begin41 head:=1;42 tail:=1;43 q[1]:=n;44 f[n]:=0;45 answer:=maxlongint;46 for i:=n-1 downto 1 do47 begin48 bestK:=d[i];49 while (tail-head+1>=2)and(k(q[head+1],q[head])>=bestk) do50 inc(head);51 f[i]:=h[i-1]+g[q[head]]+h[q[head]-1]-h[i]-d[i]*(w[q[head]-1]-w[i]);52 while (tail-head+1>=2)and(k(q[tail],q[tail-1])

 

 

 

转载于:https://www.cnblogs.com/neverforget/archive/2012/04/19/2456527.html

你可能感兴趣的文章
【转载】jQuery获取Select选择的Text和 Value
查看>>
Unity3D 学习教程 5 属性面板
查看>>
企业级 SpringBoot 教程 (二十)处理表单提交
查看>>
解决->Word无法创建工作文件,请检查临时环境变量
查看>>
面包屑导航
查看>>
正则表达式
查看>>
CentOS6.5固定IP方式上网(NAT)
查看>>
jboss信息安全
查看>>
[DP][二分]JZOJ 3463 军训
查看>>
SQL语言基础
查看>>
跟左神学算法10 经典算法 - 递归与动态规划
查看>>
888. Uncommon Words from Two Sentences
查看>>
查看最新的Google地址
查看>>
数值与字符串的转换
查看>>
正则表达式基础总结
查看>>
oalTouch (OpenAL的一个应用)
查看>>
编译发布版本的时候移除NSLog输出的方法
查看>>
黄聪:VS2017调试时提示“运行时无法计算表达式的值”
查看>>
黄聪:iis7.5 偶尔出现500服务器错误-内部服力器错误
查看>>
爬虫库之BeautifulSoup学习(四)
查看>>