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 ...
随机推荐
- JavaScript函数表达式、闭包、模仿块级作用域、私有变量
函数表达式是一种非常有用的技术,使用函数表达式可以无需对函数命名,从而实现动态编程.匿名函数,是一种强大的方式,一下总结了函数表达式的特点: 1.函数表达式不同于函数声明,函数声明要求有名字,但函数表 ...
- supervisor的安装与简单介绍
1,介绍 Supervisor是一个进程管理工具,官方的说法 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要 ...
- Ubuntu下运行Shell脚本
将一个脚本保存为带有扩展名的文件,如test.sh, 在终端上输入: chmod +x test.sh 然后输入: test.sh 终端显示: test.sh 找不到命令(后来看了鸟个私房菜,发现这样 ...
- MySQL中的group_concat函数
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 以cat_id分组,把name字段的值打印在一行, ...
- Android基础总结(七)
广播(掌握) 广播的概念 现实:电台通过发送广播发布消息,买个收音机,就能收听 Android:系统在产生某个事件时发送广播,应用程序使用广播接收者接收这个广播,就知道系统产生了什么事件. Andro ...
- sass 安装、配置,css规则
http://blog.csdn.net/oyuemijindu/article/details/51036096 --sass 安装 一安装 1.ruby下载,可以到官网下载 ,注意如果是系统如果 ...
- Android源码——Activity组件的启动过程
根Activity启动过程 Launcher启动MainActivity的过程主要分为6个步骤: 一.Launcher向ActivityManagerService发送一个启动MainActivity ...
- 统一的Json组件和csv下载组件
java-web-common java-web-common Json组件 目标和用途 规范Json接口格式 Controller中一律返回Java object,组件将自动转换数据格式,满足Jso ...
- HibernateSessionFactory建立-使用ThreadLocal
立即加载还是延迟加载必须要连接数据库的,而在Java中连接数据库是依赖java.sql.Connection,在hibernate中session就是Connection的一层高级封装,一个sessi ...
- R语言获取数据类型信息的一些有用函数
向量.因子.时间序列x[i]: 矩阵.数据框x[i, j] x[i, ] x[, j]: 数组就是根据维度多打几个逗号而已x[i, j, k, -]: 列表要用双重中括号x[[i]]. 特殊的 ...