传送门

首先显然下楼的操作一定是不优的,所以只要考虑上楼

设 $f[i]$ 表示到第 $i$ 层时需要的最少时间

那么首先考虑走楼梯,有转移,$f[i]=f[i-1]+a[i-1]$

然后考虑坐电梯有:$f[i]=f[j]+(\sum_{k=j}^{i-1}b[k])+c$

显然那个 $\sum b$ 可以用前缀和搞一下,那么 $f[i]=f[j]+sum[i-1]-sum[j-1]+c$

我们 $dp$ 转移的时候只要维护一个当前 $f[j]-sum[j-1]$ 的最小值 $mi$ 即可

即 $f[i]=mi+sum[i-1]+c$

别问我为什么要强行写个线段树,我脑抽了

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cmath>
  6. using namespace std;
  7. typedef long long ll;
  8. inline int read()
  9. {
  10. int x=,f=; char ch=getchar();
  11. while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
  12. while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
  13. return x*f;
  14. }
  15. const int N=2e5+;
  16. const ll INF=1e18;
  17. ll n,m,A[N],B[N];
  18. struct SegTree {
  19. ll t[N<<];
  20. inline void ins(int o,int l,int r,int pos,int v)
  21. {
  22. if(l==r) { t[o]+=v; return; }
  23. int mid=l+r>>;
  24. pos<=mid ? ins(o<<,l,mid,pos,v) : ins(o<<|,mid+,r,pos,v);
  25. t[o]=min(t[o<<],t[o<<|]);
  26. }
  27. inline ll query(int o,int l,int r,int ql,int qr)
  28. {
  29. if(l>=ql&&r<=qr) return t[o];
  30. if(l>qr||r<ql) return INF;
  31. int mid=l+r>>;
  32. return min(query(o<<,l,mid,ql,qr),query(o<<|,mid+,r,ql,qr));
  33. }
  34. }T;
  35. ll f[N];
  36. int main()
  37. {
  38. n=read(),m=read();
  39. for(int i=;i<=n;i++) A[i]=read();
  40. for(int i=;i<=n;i++) B[i]=B[i-]+read();
  41. for(int i=;i<=n;i++)
  42. {
  43. f[i]=f[i-]+A[i];
  44. f[i]=min(f[i],T.query(,,n,,i-)+B[i]+m);
  45. T.ins(,,n,i,f[i]-B[i]);
  46. }
  47. for(int i=;i<=n;i++) printf("%lld ",f[i]); puts("");
  48. return ;
  49. }

Codeforces 1249 E. By Elevator or Stairs?的更多相关文章

  1. [题解]Mail.Ru Cup 2018 Round 1 - A. Elevator or Stairs?

    [题目] A. Elevator or Stairs? [描述] Masha要从第x层楼去第y层楼找Egor,可以选择爬楼梯或者坐直升电梯.已知爬楼梯每层需要时间t1:坐直升电梯每层需要时间t2,直升 ...

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

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

  3. CodeForces1249E-By Elevator or Stairs?-好理解自己想不出来的dp

    Input The first line of the input contains two integers nn and cc (2≤n≤2⋅105,1≤c≤10002≤n≤2⋅105,1≤c≤1 ...

  4. Codeforces Round #671 (Div. 2) B. Stairs 难度1200

    题目链接: Problem - 1419B - Codeforces 题目 题意 给x个格子,你可以用这x个格子去拼成楼梯 好的楼梯的要求如下: 1. 第n列有n个格子 2. 这个楼梯的所有格子可以被 ...

  5. Codeforces 1249 F. Maximum Weight Subset

    传送门 设 $f[x][i]$ 表示 $x$ 的子树中,离 $x$ 最近的选择的节点距离为 $i$ 的合法方案的最大价值 设 $val[x]$ 表示节点 $x$ 的价值,首先有 $f[x][0]=va ...

  6. Codeforces 1249 D2. Too Many Segments (hard version)

    传送门 贪心 对于第一个不合法的位置,我们显然要通过删除几个覆盖了它的区间来使这个位置合法 显然删右端点更靠右的区间是更优的,所以就考虑优先删右端点靠右的,然后再考虑下一个不合法位置 用一个 $set ...

  7. codeforces 1249 D2 Too Many Segments (hard version) 贪心+树状数组

    题意 给定n个线段,线段可以相交,第\(i\)个线段覆盖的区间为\([l_i,r_i]\),问最少删除多少个线段让覆盖每个点的线段数量小于等于k. 分析 从左往右扫每个点\(x\),若覆盖点\(x\) ...

  8. Codeforces1249E By Elevator or Stairs?

    题意 给定整数c和数组a,b,\(a_i\)表示通过爬楼梯的方法从第\(i\)层到\(i+1\)层需要的时间,\(b_i\)表示通过坐电梯的方法从第\(i\)层到\(i+1\)层需要的时间,坐电梯前需 ...

  9. Codeforces Round #671 (Div. 2) B. Stairs (递推)

    题意:一个台阶由一些单元格组成,如果一个高度为\(n\)的台阶中有\(n\)个不相邻的正方形(如图中的样例),就称这个台阶是"好台阶",现给你\(x\)个单元格,问最多能组成多少个 ...

随机推荐

  1. 小福bbs—项目系统设计与数据库设计

    这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 实现对校园论坛软件的制作,使其能够发布帖子,查看信息等 作业的正文 小福bbs--项目需求分析 ...

  2. mysql 设置/查看mysql连接数

    mysql数据库连接数过多导致系统出错,系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是可以设置的.如果不设置,默认是100.最大是1 ...

  3. 每天一个linux命令:top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...

  4. socket.io 消息发送

    socket.io学习笔记 1.服务器信息传输: 2.不分组,数据传输: 3.分组数据传输: 4.Socket.io难点大放送(暂时没有搞定): 服务器信息传输 1. // 发送到当前请求套接字客户端 ...

  5. MacOS系统降级

    从MacOS 10.14 降级到 10.12,下载好系统镜像文件.打开,复制到Application. 准备一个至少8G的U盘,,打开磁盘工具,『抹掉』(格式化)成Mac OS扩展(日志式),名称可随 ...

  6. Android:系统日历添加默认账户

    @@ -190,9 +191,47 @@ public class AllInOneActivity extends AbstractCalendarActivity implements Event ...

  7. Angular 中的 dom 操作(ViewChild)以及父子组件中通过 ViewChild 调用子组件的方法

    <app-header #header></app-header> <div #myBox> 我是一个dom节点 </div> <button ( ...

  8. shell统计ip访问情况并分析访问日志

    有日志 1.log,部分内容如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com“/seccode.php?upd ...

  9. shell脚本批量执行命令----必需判断上一步执行结果--没有捷径

    # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...

  10. Jquery Ajax WebService

    仅供参考 ws.aspx 代码 <script type="text/javascript"> $(function () { $.ajax({ type: " ...