【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=4884

【题目大意】

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

【题解】

  我们用dp[i][j]表示到第i个位置,重力方向为j时候的最小能量消耗,
  对于不可达要在每个位置特殊判断是否存在c[i]<=f[i-1]或者f[i]>=c[i-1]的情况。

【代码】

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long LL;
const int N=100010;
int n,c[N],f[N];
LL dp[N][2];
const LL INF=0x3f3f3f3f3f3f3f3f;
int main(){
while(~scanf("%d",&n)){
for(int i=1;i<=n;i++)scanf("%d",&c[i]);
for(int i=1;i<=n;i++)scanf("%d",&f[i]);
memset(dp,0x3f,sizeof(dp));
dp[1][0]=0; dp[1][1]=c[1]-f[1];
for(int i=2;i<=n;i++){
if(f[i]<=f[i-1])dp[i][0]=dp[i-1][0];
if(c[i]>=c[i-1])dp[i][1]=dp[i-1][1];
dp[i][0]=min(dp[i][0],dp[i][1]+c[i]-f[i]);
dp[i][1]=min(dp[i][1],dp[i][0]+c[i]-f[i]);
if(c[i]<=f[i-1]||f[i]>=c[i-1])dp[i][0]=dp[i][1]=INF;
}printf("%lld\n",dp[n][0]==INF?-1:dp[n][0]);
}return 0;
}

BZOJ 4884 [Lydsy2017年5月月赛]太空猫(单调DP)的更多相关文章

  1. bzoj 4836: [Lydsy2017年4月月赛]二元运算 -- 分治+FFT

    4836: [Lydsy2017年4月月赛]二元运算 Time Limit: 8 Sec  Memory Limit: 128 MB Description 定义二元运算 opt 满足   现在给定一 ...

  2. BZOJ 4881: [Lydsy2017年5月月赛]线段游戏

    4881: [Lydsy2017年5月月赛]线段游戏 Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 164  Solved: 81[Submit][St ...

  3. 【bzoj4884】[Lydsy2017年5月月赛]太空猫 dp

    原文地址:http://www.cnblogs.com/GXZlegend/p/6825431.html 题目描述 太空猫(SpaceCat)是一款画面精致.玩法有趣的休闲游戏,你需要控制一只坐在迷你 ...

  4. bzoj 4885: [Lydsy2017年5月月赛]长方体

    Description 给定一个a*b*c的长方体,定义其表面上两个点的距离为沿着长方体的表面走的最短路径的长度,请找到距离最远的点对,你需要保证找到的两个点里至少有一个是长方体顶点. Input 第 ...

  5. BZOJ 4883 [Lydsy2017年5月月赛]棋盘上的守卫(最小生成环套树森林)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4883 [题目大意] 在一个n*m的棋盘上要放置若干个守卫. 对于n行来说,每行必须恰好 ...

  6. 【BZOJ 4832 】 4832: [Lydsy2017年4月月赛]抵制克苏恩 (期望DP)

    4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 275  Solved: 87 Descripti ...

  7. [补档][Lydsy2017年4月月赛]抵制克苏恩

    [Lydsy2017年4月月赛]抵制克苏恩 题目 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平. 如果你不玩炉石传说,不必担心,小Q同学会告诉你所有相关的细节.炉石传说是这样的一 ...

  8. 【BZOJ4832】[Lydsy2017年4月月赛]抵制克苏恩 概率与期望

    [BZOJ4832][Lydsy2017年4月月赛]抵制克苏恩 Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q同学会告诉 ...

  9. 【BZOJ4883】[Lydsy2017年5月月赛]棋盘上的守卫 KM算法

    [BZOJ4883][Lydsy2017年5月月赛]棋盘上的守卫 Description 在一个n*m的棋盘上要放置若干个守卫.对于n行来说,每行必须恰好放置一个横向守卫:同理对于m列来说,每列 必须 ...

随机推荐

  1. [POI2004] SZP (贪心+拓扑排序)

    [问题描述] Byteotian 中央情报局(BIA) 雇佣了许多特工. 他们每个人的工作就是监视 另一名特工. Byteasar 国王需要进行一次秘密行动,所以他要挑选尽量多的信得过的特工. 但 是 ...

  2. webpack自动生成项目的html

    1 自动生成多个html页面 设置webpack.config.js中的plugins属性,多次调用plugin插件(new htmlWebpackPlugin()),同时设置对应数量的.js入口文件 ...

  3. base--AuditObject

    //参考base-4.0.2.jarpublic class AuditObject extends HashMap<String, Object> implements TimeRefe ...

  4. js 验证ip列表

    如题. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...

  5. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week2 Neural Networks Basics课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week2 Neural Networks Basics 2.1 ...

  6. defconfig file 的 位置

    Platform MSM8917 MSM8937 defconfig file position Android/kernel/msm-3.18/arch/arm/configs/

  7. [device tree] interrupt mapping example

    This is for Devicetree Specification Release 0.1 Interrupt Mapping Example p19 在講解前,先帶進一些 PCI 的基礎觀念 ...

  8. python基础===isinstance() 函数,判断一个对象是否是一个已知的类型

    isinstance(object, classinfo) object -- 实例对象. classinfo -- 可以是直接或间接类名.基本类型或者有它们组成的元组. >>>a ...

  9. python基础===tkinter学习链接

    http://effbot.org/tkinterbook/tkinter-classes.htm

  10. C#通过反射获取类中的方法和参数个数,反射调用方法带参数

    using System; using System.Reflection; namespace ConsoleApp2 { class Program { static void Main(stri ...