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. Codeforces 1208F - Bits And Pieces(高维前缀和)

    题面传送门 题意:求 \(\max\limits_{i<j<k}a_i|(a_j\&a_k)\). \(1\leq n \leq 10^6,1\leq a_i\leq 2\time ...

  2. [R] cbind和filter函数的坑

    最近我用cbind函数整合数据后,再用filter过滤数据,碰到了一个大坑. 以两组独立样本t检验筛选差异蛋白为例进行说明吧. pro2 <- df2[1:6] Pvalue<-c(rep ...

  3. 集群SGE作业调度系统

    目录 0. 一些基本概念 1. 常见的几种资源管理和调度系统 2. SGE常见指令 2.1 提交任务 2.2 查看任务 2.3 删除任务 2.4 挂起/恢复任务 2.5 更改任务属性 0. 一些基本概 ...

  4. 安卓手机添加系统证书方法(HTTPS抓包)

    目录 1. 导出证书(以Charles为例) 2. 安卓证书储存格式 3. 将导出的证书计算hash值 4. 生成系统系统预设格式证书文件 5. 上传证书 安卓7.0以后,安卓不信任用户安装的证书,所 ...

  5. 使用systemd将iptables规则在docker启动后自动导入

    编写systemd文件 $ sudo vi /etc/systemd/system/iptables-import.service # /etc/systemd/system/iptables-imp ...

  6. [源码解析] PyTorch 分布式 Autograd (6) ---- 引擎(下)

    [源码解析] PyTtorch 分布式 Autograd (6) ---- 引擎(下) 目录 [源码解析] PyTtorch 分布式 Autograd (6) ---- 引擎(下) 0x00 摘要 0 ...

  7. 『学了就忘』Linux启动引导与修复 — 68、Linux系统运行级别

    目录 1.Linux系统运行级别介绍 2.查看运行级别 3.修改当前系统的运行级别 4.系统默认运行级别 5./etc/rc.d/rc.local文件说明 1.Linux系统运行级别介绍 Linux默 ...

  8. 【bfs】洛谷 P1443 马的遍历

    题目:P1443 马的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 记录一下第一道ac的bfs,原理是利用队列queue记录下一层的所有点,然后一层一层遍历: 其中: 1.p ...

  9. 容器之分类与各种测试(四)——map

    map和set的区别在于,前者key和value是分开的,前者的key不会重复,value可以重复:后者的key即为value,后者的value不允许重复.还有,map在插入时可以使用 [ ]进行(看 ...

  10. oracle 外部表查alter日志

    --创建文件夹,路径是alter日志的路径 create or replace directory data_dir as '/u01/app/oracle/diag/rdbms/orcl/orcl/ ...