原文地址:http://www.cnblogs.com/GXZlegend/p/6825431.html


题目描述

太空猫(SpaceCat)是一款画面精致、玩法有趣的休闲游戏,你需要控制一只坐在迷你飞碟上的猫咪在太空里不断探索,让大家看看你能飞得多远。游戏地图可以看成一个二维的网格图,上下是两段障碍物。在游戏的一开始,太空猫位于地图最左边的下边界之上,且重力方向向下。
在每个时刻,你可以用手指点击屏幕,翻转重力的方向,或者通过遥感控制太空猫往左或往右移动。每次翻转重力方向时,你需要消耗的能量值等于上下底边之间的高度差。在左右移动的时候,太空猫可以下降到对应重力方向更低的位置,但不能往上爬。当然,太空猫也不能穿墙而过。在重力翻转的过程中,直到碰到地面之前,你都不能操控太空猫左右移动。太空猫的终点位于地图的最右端的下底边之上,请计算为了让太空猫到达终点,需要消耗能量的最小值。

输入

第一行包含一个正整数n(1<=n<=100000),即地图的宽度。
第二行包含n个正整数c_1,c_2,...,c_n(2<=c_i<=10^9),分别表示每个横坐标对应的上边界的高度。
第三行包含n个正整数f_1,f_2,...,f_n(1<=f_i<c_i),分别表示每个横坐标对应的下边界的高度。

输出

输出一行一个整数,即最少的能量,若无法到达终点,请输出“-1”。

样例输入

4
3 4 3 2
1 2 1 1

样例输出

4


题解

dp

设f[i]表示到达i时在下面时的最小花费,g[i]表示到达i时在上面的最小花费。

然后各种dp乱搞并判断。

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100010
using namespace std;
typedef long long ll;
ll u[N] , d[N] , f[N] , g[N];
int main()
{
int n , i;
scanf("%d" , &n);
for(i = 1 ; i <= n ; i ++ ) scanf("%lld" , &u[i]);
for(i = 1 ; i <= n ; i ++ ) scanf("%lld" , &d[i]);
memset(f , 0x3f , sizeof(f)) , memset(g , 0x3f , sizeof(f));
f[1] = 0 , g[1] = u[1] - d[1];
for(i = 2 ; i <= n ; i ++ )
{
if(d[i - 1] >= d[i] && u[i] > d[i - 1]) f[i] = min(f[i] , f[i - 1]);
if(u[i - 1] <= u[i] && d[i] < u[i - 1]) g[i] = min(g[i] , g[i - 1]);
f[i] = min(f[i] , g[i] + u[i] - d[i]) , g[i] = min(g[i] , f[i] + u[i] - d[i]);
}
printf("%lld\n" , f[n] != 0x3f3f3f3f3f3f3f3fll ? f[n] : -1);
return 0;
}

最新文章

  1. PHP写文件函数
  2. 2.EasyUI学习总结(二)——easyloader分析与使用(转载)
  3. havok之内存管理
  4. bat自动执行telnet
  5. POJ 3254 Corn Fields(状压DP)
  6. WEB网页插件 如何实现 选择上传图片路径 【高级问题】
  7. Pop Sequence
  8. flash builder 4.7 debug via usb device iPhone 4s - device not found
  9. SANS top 20
  10. 基于Mvc3,Ef,领域驱动电子商务系统的EShop开发
  11. 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day
  12. JUnit单元测试遇到的问题及解决思路
  13. MySQL默认储存引擎修改
  14. IOS开发初体验
  15. Sql 无法解决 equal to 运算中 &quot;Chinese_PRC_CI_AS&quot; 和 &quot;Chinese_PRC_90_CI_AI&quot; 之间的排序规则冲突
  16. windows平台MySQL密码设置与破解
  17. super方法 调用父类的方法
  18. flutter学习地址
  19. NOIP 2018 游记(退役了!)
  20. Lucene 个人领悟 (一)

热门文章

  1. Oracle 使用Nid 修改数据库的DBID 和 Database Name
  2. JS下载文件常用的方式
  3. PHP Socket服务器搭建和测试
  4. 对Neural Machine Translation by Jointly Learning to Align and Translate论文的详解
  5. RepeatMasker使用
  6. Can't connect to local MySQL server through socket '/tmp/mysql.sock'
  7. vim+软件安装——06
  8. js简单的获取与输出
  9. JVM——九大工具助你玩转Java性能优化
  10. PHP.TP框架下商品项目的优化2-图片优化