题意:第一行输入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. ndarray数组的索引和切片

    索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程 import numpy as np 一维数组 一维数组的索引和切片与python中的列表类似 索引:若元素个数为n,则索引下标可表示 ...

  2. C#开发BIMFACE系列36 服务端API之:回调机制

    系列目录     [已更新最新开发文章,点击查看详细] 在<C# 开发 BIMFACE 系列文章>中介绍了模型转换.模型对比接口.这2个功能接口比较特殊,发起请求后,逻辑处理是在BIMFA ...

  3. 7-49 求前n项的阶乘之和 (15 分)

    从键盘输入一个整数n,求前n项的阶乘之和,1+2!+3!+...+n!的和 输入格式: 输入一个大于1的整数.例如:输入20. 输出格式: 输出一个整数.例如:2561327494111820313. ...

  4. 第一篇:注册中心Eureka

    1.什么是Eureka,有什么用? Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是spri ...

  5. 30分钟学会Objective-C

    注: 本文首发于我的个人博客:https://evilpan.com/2019/04/05/objc-basics/ 请原谅我的标题党.但是如果你有其他语言的学习经验,要学习Objective-C的语 ...

  6. python使用for循环打印9*9乘法表。

    代码如下: for a in range(1, 10): for b in range(1, 10): if b <= a: print("%d*%d=%d\t" % (b, ...

  7. 服务器上监控tomcat,如果挂掉则重启

    该脚本用于监控tomcat服务器是否可用,如果服务不可用则重启tomcat 略微修改后也可以用于其他服务的监控 monitor.sh 脚本如下 #!/bin/sh # 定义要监控的页面地址 WebUr ...

  8. go-admin基于Gin + Vue + Element UI的前后端分离权限管理系统

    ✨ 特性 遵循 RESTful API 设计规范 基于 GIN WEB API 框架,提供了丰富的中间件支持(用户认证.跨域.访问日志.追踪ID等) 基于Casbin的 RBAC 访问控制模型 JWT ...

  9. Google Flutter Clock 大赛优秀项目推荐

    Flutter 在 Google 加持下,如今可以作为跨平台首选了.早在 Flutter 刚刚出现强势苗头,我作为第一批体验了一把,<Flutter 初尝:从 Java 无缝过渡>,不过也 ...

  10. String的那些事

    目录 String的特点? String的构造方法? String的常用方法? String的特点? 通过查看String类的源码我们得知:String类被final关键字修饰,这即是说明String ...