[bzoj1705] [Usaco2007 Nov]Telephone Wire 架设电话线
2015-12-22 21:50
531 查看
正常DP。。
f[i][j]表示前i个电线杆,把第i个电线杆高度改为j的最少总费用。设原来电线杆高度为h[]
f[i][j]=min{
f[i-1][k]+C*|j-k|+(j-h[i])^2,(k>=h[i-1],j>=h[i])
}
直接上的话复杂度是O(n*100*100)= =
可以用两个数组存一下j不同取值时的k(两个数组:一个是k>=j的,另一个是k<=j的,j值改变的时候把这两个辅助数组也调一下就好了)。。具体见代码吧。。这样复杂度就是O(n*100)了
View Code
f[i][j]表示前i个电线杆,把第i个电线杆高度改为j的最少总费用。设原来电线杆高度为h[]
f[i][j]=min{
f[i-1][k]+C*|j-k|+(j-h[i])^2,(k>=h[i-1],j>=h[i])
}
直接上的话复杂度是O(n*100*100)= =
可以用两个数组存一下j不同取值时的k(两个数组:一个是k>=j的,另一个是k<=j的,j值改变的时候把这两个辅助数组也调一下就好了)。。具体见代码吧。。这样复杂度就是O(n*100)了
#include<cstdio> #include<iostream> #include<cstring> using namespace std; const int maxn=100023; int f[2][101],gpre[101],gaft[101],h[maxn]; int i,j,k,n,m,ans,C,now,pre,tmp,mn,mx; int ra;char rx; inline int read(){ rx=getchar();ra=0; while(rx<'0'||rx>'9')rx=getchar(); while(rx>='0'&&rx<='9')ra*=10,ra+=rx-48,rx=getchar();return ra; } int main(){ n=read();C=read();now=1;pre=0;mn=2333333; for(i=1;i<=n;i++)h[i]=read(),mn=min(mn,h[i]),mx=max(mx,h[i]); for(i=1;i<=n;i++){ for(j=h[i];j<=mx;j++)f[now][j]=(j-h[i])*(j-h[i])+min(gpre[j],gaft[j]); for(tmp=j=h[i];j<=mx;j++)if(f[now][j]<f[now][tmp]+(j-tmp)*C)tmp=j,gpre[j]=f[now][j]; else gpre[j]=f[now][tmp]+(j-tmp)*C; memset(gpre,50,h[i]<<2); for(tmp=j=mx;j>=h[i];j--)if(f[now][j]<f[now][tmp]+(tmp-j)*C)tmp=j,gaft[j]=f[now][j]; else gaft[j]=f[now][tmp]+(tmp-j)*C; for(j=h[i]-1;j;j--)gaft[j]=f[now][tmp]+(tmp-j)*C; swap(now,pre); } for(ans=f[pre][h ],i=h +1;i<=mx;i++)if(f[pre][i]<ans)ans=f[pre][i]; printf("%d\n",ans); return 0; }
View Code
相关文章推荐
- java中的全等和相似
- iOS 百度地图
- 进程僵死,terminate called without an active exception,信号11
- Qt学习之路(7):事件初了解|重写鼠标点击事件
- SQL语句 SELECT后面的表别名-点-星号(alias.*)
- 数据结构基础(C语言版)(朱仲涛翻译)代码学习 第一章002
- dct变换
- 读书笔记 --《数学之美》_隐马尔可夫模型
- CF# Educational Codeforces Round 3 B. The Best Gift
- Unreal Engine 4 RenderTarget制作Live Camera效果
- Java虚拟机
- Windows和 Centos7 双系统的搭建
- php 遍历目录并打印所有文件名
- MPAndroidchart 教程:图例 Legend(七)
- OAuth授权协议(第三方不用密码获得授权): 密码不安全+不好控制
- SVN 命令
- git 两个用户实现在服务器上的交互
- Winform 主程序入口中记录并捕获全局异常
- iOS 面试题
- JVM、JRE与JDK的关系