题意:第一行输入n和c,表示有n层楼,电梯来到需要时间c

输入两行数,每行n-1个,表示从一楼到二楼,二楼到三楼.....n-1楼到n楼,a[ ] 走楼梯和 b[ ] 乘电梯花费的时间

思路:动态规划,考虑几种状态,假设当前在i-1层,想要去i层,有两种方法,乘电梯,走楼梯。

i-1层要考虑由什么状态到i-1层的,电梯和楼梯,如果是电梯,走楼梯或者乘电梯直接加上需要的时间即可,如果是楼梯状态,继续走楼梯加上a[ i ]即可,如果要坐电梯,加上电梯花费时间的同时也要加上等待电梯的时间;

此时列出动态转移方程,假设楼梯状态是0,电梯状态是 1

dp[ i ][ 0 ]=max{ dp[ i-1 ][ 0 ]+a[ i ] ,dp[ i-1 ][ 1 ]+ b[ i ] +c};

dp[ i ][ 1 ]=max{dp[ i-1 ][ 0 ] +a[ i ] ,dp[ i-1 ][ 1 ] +b[ i ]};

注意:当第一次坐电梯时,一定加上c

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define N 200005
int n,c,a[N],b[N],dp[N][2];
int main()
{
while(~scanf("%d%d",&n,&c))
{
for(int i=1;i<n;i++)
scanf("%d",&a[i]);//楼梯
for(int j=1;j<n;j++)
scanf("%d",&b[j]);//电梯
memset(dp,0,sizeof(dp));
/* 状态转移方程 [i]当前楼层 [j]怎么来的 [k]怎么走的 0 楼梯 1电梯*/
/*dp[i][0][0]=min(dp[i-1][0][0]+a[i],dp[i-1][1][0]+a[i]);
dp[i][0][1]=min(dp[i-1][0][0]+a[i],dp[i-1][1][0]+a[i]);
dp[i][1][0]=min(dp[i-1][0][1]+b[i]+c,dp[i-1][1][1]+b[i]);
dp[i][1][1]=min(dp[i-1][0][1]+b[i]+c,dp[i-1][1][1]+b[i]);*/
int w=0;
for(int i=1;i<n;i++)
{
dp[i][0]=min(dp[i-1][0]+a[i],dp[i-1][1]+a[i]);
if(i==1)
w=c;
else w=0;//第一次乘电梯必须加上c
dp[i][1]=min(dp[i-1][0]+b[i]+c,dp[i-1][1]+b[i]+w);
}
for(int i=0;i<n-1;i++)
printf("%d ",min(dp[i][0],dp[i][1]));
printf("%d\n",min(dp[n-1][0],dp[n-1][1]));
}
return 0;
}

CodeForces - 1249E 楼梯和电梯的更多相关文章

  1. Codeforces 1249E By Elevator or Stairs? 题解

    这题其实和 NIKKEI 2019-2-D Shortest Path on a Line 差不多的啦,都是一种最短路的变形,把多个点和边关联了起来. 题面 你要从一楼到 \(n\) 楼去,每层楼可以 ...

  2. dp(电梯与楼梯)

    http://codeforces.com/problemset/problem/1249/E E. By Elevator or Stairs? time limit per test 2 seco ...

  3. CF595 Div31249A,1249B1,1249B2,1249C1,1249C2,1249D1,1249D2,1249E,1249F)题解

    A:水题,先排序,有相连的输出2,否则输出1. #include<bits/stdc++.h> using namespace std; #define pii pair<int,i ...

  4. MySQL 第七天(核心优化一)

    一.Mysql核心优化 1. 优化的方面 ① 存储层:数据表"存储引擎"选取.字段选取.逆范式(3范式) ② 设计层:索引.分区/分表 ③ 架构层:分布式部署(主从模式/共享) ④ ...

  5. 我为什么要进国企----HP大中华区总裁孙振耀退休感言

    一.关于工作与生活 我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司40岁附近的经理人是很尴尬的.我见过的40岁附近的外企经理人大多 ...

  6. 转(HP大中华区总裁孙振耀退休感言)

    开篇转发一篇好文,苦闷,消沉,寂寞,堕落的时候看看. 发现这篇文章是09年之前就有人转发到自己博客了.放到自己的地盘,容易记起有这么个心灵鸡汤.   一.关于工作与生活 我有个有趣的观察,外企公司多的 ...

  7. 【转】HP(惠普)大中华区总裁孙振耀退休感言

    一.关于工作与生活我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司40岁附近的经理人是很尴尬的.我见过的40岁附近的外企经理人大多在 ...

  8. [Codeforces967C]Stairs and Elevators(二分查找)

    [不稳定的传送门] Sloution 每次试一下最近的2个楼梯或者电梯就行了 Code #include <cstdio> #include <algorithm> #incl ...

  9. 关于工作与生活——HP大中华区总裁孙振耀撰文谈退休并畅谈人生

    转自:http://blog.csdn.net/adaptiver/article/details/7494121 我有个有趣的观察,外企公司多的是25-35岁的白领, 40岁以上的员工很少,二三十岁 ...

随机推荐

  1. Vue.js——学习笔记(一)

    Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...

  2. Android 开发技术周报 Issue#270

    新闻 Play Store应用更新:换主题不需要再到系统设置了 新证据表明谷歌Fuchsia系统已进入"狗粮"阶段 即将邀请用户测试 谷歌I/O 2020 开发者大会如期举行 MW ...

  3. 7-34 jmu-python-是否偶数 (10 分)

    输入一个整数,判断是否偶数 输入样例: 7 输出样例: 7不是偶数 输入样例: 8 输出样例: 8是偶数 a = int(input()) if (a % 2 == 0): print('%d是偶数' ...

  4. 前端萌新眼中的Promise及使用

    一个 Promise 就是一个代表了异步操作最终完成或者失败的对象.这是MDN上关于Promise的解释.在前端开发中,Promise经常被拿来用于处理异步和回调的问题,来规避回调地狱和更好排布异步相 ...

  5. XSS_跨站脚本攻击

    前段时间在网上看到一个网址,好奇之下进去看了看.胜利的条件是你录入一个串,让其调用prompt(1) .发现里面有好多想不到的东西,今天终于悠闲了来这里说说XSS. XSS 原理 恶意攻击者往Web页 ...

  6. js数组冒泡排序、快速排序、插入排序

    1.冒泡排序 //第一种 function bubblesort(ary){ for(var i=0;i<ary.length-1;i++){ for(var j=0;j<ary.leng ...

  7. Java基础--数组的定义

    1.数组的定义 数组:一组能够储存相同数据类型值的变量的集合. 2.数组的赋值方式 (1)使用默认的初始值来初始化数组中的每一个元素 语法:数组元素类型[]数组名 = new数组元素类型[数组中元素的 ...

  8. 读《Java并发编程的艺术》学习笔记(二)

    第2章  Java并发机制的底层实现原理 Java代码在编译后变成字节码,字节码被类加载器加载到JVM中,JVM执行字节码,最终转换为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实 ...

  9. 峰哥说技术:01-Spring Boot介绍

    Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 Spring Boot介绍 A.Spring Boot是什么? 由于Spring是一个轻量级的企业开发框架 ...

  10. linux 安装Mosquitto

    这篇博客讲的很好:https://www.cnblogs.com/chen1-kerr/p/7258487.html 此处简单摘抄部分内容 1.下载mosquitto安装包 源码地址:http://m ...