bzoj1705
话说这题很久以前就写过,然后好像一直忘了写题解……
以前看这道题还觉得挺难的,现在觉得好水
首先朴素的想法肯定是动归
f[i,j]表示到处理到第i根电线,最终高度为j的最小花费
f[i,j]:=min(f[i-1,k]+sqr(h[i]-j)+abs(j-k)*c) (h[i]<=j<=max) max为原来所有电线最高的高度
但这个会超时,我们就要想办法优化;
考虑这样一个方程式f[i,j]:=min(f[i-1,k]+sqr(h[i]-j)+(j-k)*c);
我们很容易用O(max)的时间完成转移(好像之前有过例子);
但这个方程式多了一个绝对值,根据数学上的思想,我们就去绝对值讨论呗;
容易整理得到
f[i,j]=min(min(f[i-1,k]-k*c+j*c) j>=k, min(f[i-1,k]+k*c-j*c) j<=k)+sqr(h[i]-j)
这样不难想到,令
tal[j]=min(f[i-1,k]+k*c) k∈[j,max];
sho[j]=min(f[i-1,k]-k*c) k∈[h[i-1],j]
tal[j]表示上一根电线杆状态高度大于当前电线杆高度j高的花费中的最小值
sho[j]表示上一根电线杆状态高度小于当前电线杆高度j高的花费中的最小值
然后弄弄就出来了
const hmax=;
inf=;
var h:array[..] of longint;
sho,tal:array[..] of longint;
f:array[..,..] of longint;
i,k1,k2,n,m,j,c,ans:longint;
function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; begin
readln(n,c);
for i:= to n do
begin
readln(h[i]);
if h[i]>m then m:=h[i];
end;
h[n+]:=h[i];
k1:=;
k2:=;
for i:=h[] to m do
f[,i]:=sqr(i-h[]);
for i:= to n do
begin
k1:=k1 xor ;
k2:=k2 xor ;
for j:= to m do
begin
tal[j]:=inf;
sho[j]:=inf;
f[k2,j]:=inf;
end;
tal[m]:=f[k1,m]+c*m;
for j:=m- downto h[i-] do
tal[j]:=min(tal[j+],f[k1,j]+c*j);
sho[h[i-]]:=f[k1,h[i-]]-c*h[i-];
for j:=h[i-]+ to m do
sho[j]:=min(sho[j-],f[k1,j]-c*j);
for j:=h[i] to m do
if j<h[i-] then
f[k2,j]:=min(f[k2,j],tal[h[i-]]-c*j+sqr(j-h[i])) //注意细节,这时候上一根电线杆不存在比这根矮的状态
else
f[k2,j]:=min(f[k2,j],min(tal[j]-c*j,sho[j]+c*j)+sqr(j-h[i]));
end;
ans:=inf;
for i:=h[n] to m do
ans:=min(ans,f[k2,i]);
writeln(ans);
end.
bzoj1705的更多相关文章
- BZOJ-1705 Longge的问题 一维GCD SUM 乱搞+质因数分解+...
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 1871 Solved: 1172 [Submit][ ...
- [bzoj1705] [Usaco2007 Nov]Telephone Wire 架设电话线
正常DP.. f[i][j]表示前i个电线杆,把第i个电线杆高度改为j的最少总费用.设原来电线杆高度为h[] f[i][j]=min{ f[i-1][k]+C*|j-k|+(j-h[i])^2,(k& ...
- 【bzoj1705】[Usaco2007 Nov]Telephone Wire 架设电话线 dp
题目描述 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= N < ...
- 【动态规划】bzoj1705: [Usaco2007 Nov]Telephone Wire 架设电话线
可能是一类dp的通用优化 Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设 ...
- bzoj1705[Usaco2007 Nov]Telephone Wire 架设电话线(dp优化)
1705: [Usaco2007 Nov]Telephone Wire 架设电话线 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 441 Solved: ...
- 【刷题记录】BZOJ-USACO
接下来要滚去bzoj刷usaco的题目辣=v=在博客记录一下刷题情况,以及存一存代码咯.加油! 1.[bzoj1597][Usaco2008 Mar]土地购买 #include<cstdio&g ...
- bzoj Usaco补完计划(优先级 Gold>Silver>资格赛)
听说KPM初二暑假就补完了啊%%% 先刷Gold再刷Silver(因为目测没那么多时间刷Silver,方便以后TJ2333(雾 按AC数降序刷 ---------------------------- ...
随机推荐
- 如何一行jquery代码写出tab标签页(链式操作)
啦啦!今天又学了一招,js写几十行的tab标签页jquery写一行就行啦,用到了链式操作!以下是代码: <!DOCTYPE html> <html lang="en&quo ...
- Headfirst设计模式的C++实现——组合模式(Composite)
menu_component.h #ifndef _MENU_COMPONENT_H_ #define _MENU_COMPONENT_H_ #include <string> class ...
- 对Android中dp单位的理解
dp 设备独立像素 ,也叫dip, device independent pixle. 比如同样在1英寸大小的屏幕上,高密度的屏幕可显示100个像素点,而低密度的屏幕只能70个点. 用了dp之后,只要 ...
- Sql语句批量更新数据(多表关联)
最近在项目中遇到一个问题,原来设计的功能是不需要一个特定的字段值depid的,但是新的功能需要根据depid来展现,于是出现了这样一个问题,新增加的数据都有正确的depid,而原来的大量的数据就没有d ...
- 盗链网易163、腾讯QQ、新浪sina、百度Baidu的图片之PHP独立版
网易相册频道,网易相册确实是一个高质量图片的地方,而且免费,唯一缺点是很多加了水印,但这个不重要了,无意间发现网易163相册频道的图片是防止盗链的,于是便自己写了一个小程序来突破这个. 本盗链图片最新 ...
- 解决Twitter Bootstrap Tab URL链接问题
例如这样的一个Tabs 代码: <ul class="nav nav-tabs" id="myTab"> <li class="ac ...
- 推荐:PHPCMS v9 安全防范教程!
一.目录权限设置很重要:可以有效防范黑客上传木马文件. 如果通过 chmod 644 * -R 的话,php文件就没有权限访问了. 如果通过chmod 755 * -R 的话,php文件的权限就高了. ...
- 【Ubuntu12.04】安装搜狗输入法
我的系统版本是Ubuntu12.04 32位 卸载Ibus输入法 sudo apt-get remove ibus 注意: 安装ibus的命令是 sudo apt-get install fcitx ...
- hdu 5512 Pagodas 扩展欧几里得推导+GCD
题目链接 题意:开始有a,b两点,之后可以按照a-b,a+b的方法生成[1,n]中没有的点,Yuwgna 为先手, Iaka后手.最后不能再生成点的一方输: (1 <= n <= 2000 ...
- 十款优秀的在线JavaScript工具介绍
JavaScript是Web开发者不可或缺的一项技能,它可以为你的网站添加丰富的交互功能和绚丽的视觉效果,以此来增强用户体验. 本文整理了10款非常优秀的在线JavaScript代码工具,涵盖编辑.压 ...