AT_agc023_d.[AGC023D] Go Home
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有 N 栋公寓楼排成一条数轴,每栋楼编号为 1 到 N。第 i 栋公寓楼位于坐标 Xi。AtCoder 公司位于坐标 S。所有 AtCoder 公司的员工都住在这 N 栋公寓中的某一栋。住在第 i 栋公寓的员工人数为 Pi。
现在,所有员工准备同时回家。他们因为工作很累,都希望乘坐公司拥有的巴士回家。公司只有一辆巴士,但可以容纳所有员工。这辆巴士会载着所有员工,从坐标 S 出发,并按照如下规则行驶:
- 所有乘客(巴士为自动驾驶,无司机)投票决定向正方向还是负方向前进。每位员工有一票,不能弃权。得票多的方向前进 1 单位距离。如果票数相同,则向负方向前进。如果移动后的位置有公寓楼,则该楼的所有住户下车。
- 只要巴士上还有员工,就重复上述操作。
具体例子请参考样例 1 的说明。
巴士每前进 1 单位距离需要 1 秒。投票和下车所需时间可忽略不计。
每位员工都会选择使自己下车所需时间最短的投票方式。更严格地说,在每次投票时,每位员工都会考虑,巴士若向哪个方向前进,自己能更快回家(假设之后所有人都采用最优策略)。员工会基于这些信息做出最优选择。如果无论巴士向哪个方向前进,自己回家的时间都一样,则投票给负方向。
请你计算,从巴士出发到最后一名员工下车所需的总时间。已知给定的公寓位置、住户人数和巴士位置时,巴士的行驶路线是唯一确定的。此外,可以证明所有员工都能在有限时间内回家。
输入格式
输入通过标准输入给出,格式如下:
N S X1 P1 X2 P2 ⋯ XN PN
输出格式
输出从巴士出发到最后一名员工下车所需的总时间。
输入输出样例
输入#1
3 2 1 3 3 4 4 2
输出#1
4
输入#2
6 4 1 10 2 1000 3 100000 5 1000000 6 10000 7 100
输出#2
21
输入#3
15 409904902 94198000 15017 117995501 7656764 275583856 313263626 284496300 356635175 324233841 607 360631781 148 472103717 5224 497641071 34695 522945827 816241 554305668 32 623788284 22832 667409501 124410641 876731548 12078 904557302 291749534 918215789 5
输出#3
2397671583
说明/提示
限制条件
- 1≤N≤105
- 1≤S≤109
- 1≤X1<X2<⋯<XN≤109
- Xi=S(1≤i≤N)
- 1≤Pi≤109(1≤i≤N)
- 所有输入均为整数。
样例解释 1
假设巴士最初向负方向移动,则巴士坐标变化为 2→1,第 1 栋公寓的住户下车。之后巴士的移动路线很明显,会一直向正方向移动。因此,若最初向负方向移动,巴士坐标变化为 2→1→2→3→4,第 1、2、3 栋公寓住户分别在 1 秒、3 秒、4 秒下车。
若最初向正方向移动,则巴士坐标变化为 2→3,第 2 栋公寓住户下车。之后巴士会转向第 1 栋公寓,因为第 1 栋住户人数多于第 3 栋。巴士到达第 1 栋后,再前往第 3 栋。因此,若最初向正方向移动,巴士坐标变化为 2→3→2→1→2→3→4,第 1、2、3 栋公寓住户分别在 3 秒、1 秒、6 秒下车。
因此,第 1、3 栋住户会选择让巴士最初向负方向移动,第 2 栋住户会选择正方向。第 1、3 栋住户共 3+2=5 人,多于第 2 栋的 4 人。因此,巴士最初会向负方向移动,坐标变化为 2→1→2→3→4。
样例解释 2
由于各公寓住户人数相差极大,巴士总是会朝住户最多的公寓方向前进。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?