Content

一列火车从 \(0\) 时刻开始从 \(1\) 号站出发,要经过 \(n\) 个站,第 \(i\) 个站的期望到达时间和离开时间分别为 \(a_i\) 和 \(b_i\),并且还有一个实际延迟时间 \(tm_i\)。具体地,第 \(i\) 个站的实际到达时间为 \(a_i-b_{i-1}+tm_i\) 时刻,当且仅当以下两种条件同时符合时离开车站:

  • 火车已经在这个车站停靠了 \(\left\lceil\dfrac{b_i-a_i}{2}\right\rceil\) 个时刻。
  • 当前时刻 \(\geqslant b_i\)。

求这列火车到达 \(n\) 号站的时刻。

数据范围:\(t\) 组数据,\(1\leqslant t\leqslant 100\),\(1\leqslant n\leqslant 100\),\(1\leqslant a_i<b_i\leqslant 10^6\),\(0\leqslant tm_i\leqslant 10^6\)。

Solution

事实上,读懂题面之后,这道题目是不难的。我们只需要做些简单的模拟,从 \(1\) 到 \(n\) 更新 \(a_i,b_i\) 为增加延迟时间之后的时刻即可。具体地,我们先把当前站的期望到站时间和离开时间 \(a_i,b_i\) 存储一下,设为 \(prea,preb\),并且将前一个站的离开时间也存储一下,设为 \(ppreb\),然后我们新的 \(a_i\) 在题目中已有公式给出,就等于 \(preb+a_i-ppreb+tm_i\),新的 \(b_i\) 由题目中的条件可知为 \(\max\{a_i+\left\lceil\dfrac{b_i-prea}{2}\right\rceil,b_i\}\)。

存储 \(prea,preb\) 的目的想必大家都很明白,因为后面 \(a_i,b_i\) 都会改变,直接拿 \(a_i,b_i\) 来代入上面的公式肯定会出错。至于 \(ppreb\) 就更不用说了。

具体看代码实现。

Code

int n, a[107], b[107], tim[107], preb, ppreb;

int main() {
MT {
n = Rint;
F(i, 1, n) a[i] = Rint, b[i] = Rint;
F(i, 1, n) tim[i] = Rint;
preb = ppreb = b[0];
F(i, 1, n) {
int prea = a[i];
a[i] = (preb + a[i] - ppreb + tim[i]);
ppreb = b[i];
b[i] = max(a[i] + (int)ceil((b[i] - prea) / 2.0), b[i]);
preb = b[i];
}
printf("%d\n", a[n]);
}
return 0;
}

CF1501A Alexey and Train 题解的更多相关文章

  1. 【CodeForces 605A】BUPT 2015 newbie practice #2 div2-E - Sorting Railway Cars

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/E Description An infinitely lon ...

  2. [Codeforces 606C]Sorting Railway Cars

    Description An infinitely long railway has a train consisting of n cars, numbered from 1 to n (the n ...

  3. HDU 1022 Train Problem I 模拟栈题解

    火车进站,模拟一个栈的操作,额外的栈操作,查看能否依照规定顺序出栈. 数据量非常少,故此题目非常easyAC. 直接使用数组模拟就好. #include <stdio.h> const i ...

  4. hdu1032 Train Problem II (卡特兰数)

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

  5. Train Problem I(栈)

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  6. Train Problem II(卡特兰数+大数乘除)

    Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. Codeforces Round #257 (Div. 1)A~C(DIV.2-C~E)题解

    今天老师(orz sansirowaltz)让我们做了很久之前的一场Codeforces Round #257 (Div. 1),这里给出A~C的题解,对应DIV2的C~E. A.Jzzhu and ...

  8. An express train to reveries

    An express train to reveries time limit per test 1 second memory limit per test 256 megabytes input  ...

  9. Hdu 1022 Train Problem I 栈

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

随机推荐

  1. python中else的三种用法

    与if搭配 要么--不然-- num = input("输入一个数字") if(num % 2 == 0): print("偶数") else: print(& ...

  2. 贪心/构造/DP 杂题选做

    本博客将会收录一些贪心/构造的我认为较有价值的题目,这样可以有效的避免日后碰到 P7115 或者 P7915 这样的题就束手无策进而垫底的情况/dk 某些题目虽然跟贪心关系不大,但是在 CF 上有个 ...

  3. ABC201题解

    因为学校的某些操作. 让最近两天的\(Atcoder\)都能打了,挺开心的. 想上次\(ABC\)看错题意,失败退场. ------------------------------ \(A\) 直接手 ...

  4. Codeforces 1304F1/F2 Animal Observation(单调队列优化 dp)

    easy 题目链接 & hard 题目链接 给出一张 \(n \times m\) 的矩阵,每个格子上面有一个数,你要在每行选出一个点 \((i,t)\),并覆盖左上角为 \((i,t)\), ...

  5. JS设计模式之建造者模式

    建造者模式(builder pattern)属于创建型模式的一种,提供一种创建复杂对象的方式.它将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式是一步一步的创建 ...

  6. Perl 语言入门1-5

    第一章 简介 perl -v 文字处理,编写小型CGI脚本(Web服务器调用程序)的最佳语言 CPAN: Perl综合典藏网 shebang: #! /usr/bin/perl 或#! /usr/lo ...

  7. 毕业设计之zabbix+微信企业号报警

    需要自己申请一个微信企业号 创建应用 AgentId 1000003 Secret SOI8b20G96yUVM29K02-bP5N5o6dovwSF2RrDaXHJNg 企业ID(自己再企业信息里面 ...

  8. 毕业设计之zabbix之nginx状态监控

    监控脚本: [root@webone.quan.bbs ~]$vim /usr/local/zabbix/script/ngx_status.sh #!/bin/bash##************* ...

  9. .net与java建立WebService再互相调用

    A: .net建立WebService,在java中调用. 1.在vs中新建web 简单修改一下Service.cs的[WebMethod]代码: using System; using System ...

  10. Vue3项目搭建规范

    Vue3项目搭建规范 一. 代码规范 1.1 集成editorconfig配置 EditorConfig有助于为不同IDE编辑器上维护一致的编码风格 安装插件:EditorConfig for VS ...