ACM/ICPC 之 DP解有规律的最短路问题(POJ3377)
//POJ3377
//DP解法-解有规律的最短路问题
//Time:1157Ms Memory:12440K
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; #define MAXN 1000005 typedef long long LL; int n;
int dp[MAXN][3];
int sr, st, er, ed;
int main()
{
//freopen("in.txt", "r", stdin);
while(scanf("%d", &n), n)
{
scanf("%d%d%d%d", &sr,&st,&er,&ed);
if(st > ed)
{
swap(st, ed);
swap(sr, er);
}
for(int i = 1; i <= n; i++)
scanf("%d", &dp[i][0]);
for(int i = 0; i <= n; i++)
scanf("%d", &dp[i][2]);
for(int i = 1; i <= n; i++)
scanf("%d", &dp[i][1]); //更新st从左侧到达对岸的最短路
for(int i = st, w = 0; i > 0; i--)
{
w += dp[i][0] + dp[i][1]; //间接走陆路的路长和
dp[st][2] = min(dp[st][2], w + dp[i-1][2]);
if(w >= dp[st][2]) break;
} //更新ed从右侧到达对岸的最短路
for(int i = ed+1, w = 0; i <= n; i++)
{
w += dp[i][0] + dp[i][1];
dp[ed][2] = min(dp[ed][2], w + dp[i][2]);
if(w >= dp[ed][2]) break;
} LL dis[2];
dis[sr] = 0; //起始点右移最短路
dis[!sr] = dp[st][2]; //对岸右移最短路
for(int i = st + 1; i <= ed; i++)
{
int x = dp[i][sr], y = dp[i][!sr]; //该点与对岸到达右一点的路长
int z = dp[i][2]; //右侧水路长
LL tmp = dis[sr];
dis[sr] = min(dis[sr] + x, dis[!sr] + y + z);
dis[!sr] = min(dis[!sr] + y, tmp + x + z);
}
printf("%lld\n", dis[er]);
}
return 0;
}
ACM/ICPC 之 DP解有规律的最短路问题(POJ3377)的更多相关文章
- ACM/ICPC 之 DP进阶(51Nod-1371(填数字))
原题链接:填数字 顺便推荐一下,偶然看到这个OJ,发现社区运营做得很赞,而且交互和编译环境都很赞(可以编译包括Python,Ruby,Js在内的脚本语言,也可以编译新标准的C/C++11,甚至包括Go ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp
QSC and Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1007/HDU 5898 数位dp
odd-even number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5000 2014 ACM/ICPC Asia Regional Anshan Online DP
Clone Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/65536K (Java/Other) Total Submiss ...
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest
2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest A - Arranging Wine 题目描述:有\(R\)个红箱和\(W\)个白箱,将这 ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
随机推荐
- thinkphp-二次开发1
Thinkphp是一个国人使用的比较多的一个框架 ,具体的也不多了,不知道的可以去百度一下. 现在我们要讲的是如何利用现有的半成品的系统实现二次开发 讲到thinkphp的二次开发不得不说他的兄弟on ...
- Ubuntu14.04解决远程root-ssh拒绝登录
(1)查看ip地址是否冲突 我在单位的虚拟机ip地址是192.168.14.85,与其它机器冲突了.改成了192.168.14.83 (2)关闭Ubuntu14.04的防火墙 root@stgman- ...
- sql三维数据
今天有个钢铁项目在导入数据时 存货规格各种缺 相吐血 原表结构是这样的 编码.规格.名称 三种存货 三种都有想同的规格 规格对分厚度和宽度 那么问题来了 简简单单的几个厚度宽度 三种商品 就到了 10 ...
- javascipt的【函数表达式】
函数表达式 在编程时,我们可以看到不管是什么类库,jquery也好,zepto也好,都会用到大量的命名函数和匿名函数表达式,本节点就是为了弄懂为何会有这些函数表达式,以及在什么情况下会使用到这些表达式 ...
- js判断浏览器类型
使用navigator.userAgent和来判断 PC端: <script type="text/javascript">var ua=navigator.userA ...
- form表单提交时,action怎么带参数
<html> <title>form</title> <script type="text/javascript"> functio ...
- Oracle存储过程由例子到理论
1.基础环境 oracle HR环境添加新表 CREATE TABLE "HR"."cus_test" ( "id" BYTE) NOT N ...
- git的详细说明文档
http://www.ihref.com/read-16369.html fork 后如何保持同步 http://www.tuicool.com/articles/6vayqen git clone ...
- 取消ie浏览器edge浏览器输入框右边的叉和眼睛
在ie高版本浏览器和edge浏览器里type为text和password的input框在输入时右边会出现×和眼睛,如果需要清除,方法如下: 首先在页面头部声明兼容性模式 <meta http-e ...
- Linux的3个文件时间
文件的三个时间相信大家都已经很熟悉windows操作系统了,当我们在windows系统下创建一个文件时,系统同时会为这个文件建立相关的参数去描述这个文件,如图: 这些参数包括文件的大小,文件类型,位置 ...