CF729C Road to Cinema 二分答案

title

CF729C

简化题意:

某人在起点处,到终点的距离为 \(s\)

汽车租赁公司提供 \(n\) 种车型,每种车型有属性 \(c_i\) (租车费用), \(v_i\)(油箱容量)。

车子有两种前进方式 :

①. 慢速: \(1km\) 消耗 \(1L\) 汽油,花费 \(2\) 分钟。

②. 快速: \(1km\) 消耗 \(2L\) 汽油,花费 \(1\) 分钟。

路上有 \(k\) 个加油站,加油不需要花费时间,且直接给油箱加满。

问在 \(t\) 分钟内到达终点的最小花费是多少?(租车子的费用) 若无法到达终点,输出 \(-1\)

analysis

其实也是比较 简单 (降低智商)的题目。

由于洛谷上的翻译实在是考研语文水平,我又很长时间没学文化课了,所以搞懂题意费了很长时间。

然后我和昕泽乱讨论了点儿什么奇奇怪怪的东西?(绝对保证和 \(OI\) 有关)

然后得出了一个结论:二分。

然后就不会了,哈,翻题解吧,咦?这题降智商!竟然还需要数学知识。

其实有一个比较明显的想法,就是检测每一个车能否满足条件,这样的话,就可以 \(O(n)\) 扫一遍来得出最终的最小花费。

那么怎么知道一辆车满不满足条件呢?

我们设 \(x\) 为快走的路程, \(y\) 为慢走的路程, \(V\) 为汽油总量, \(s\) 为当前加油站与下一个加油站的距离,则有:
\[ \left\{\begin{array}{lcl} 2x+y=V\\ x+y=s\\ x+2y=t \end{array} \right. \]

解得:
\[ \left\{\begin{array}{lcl} x=V-s\\ y=2s-V \end{array} \right. \]

如果想当然地认为这就万事大吉了,那么等待着的结果就是 \(WA\)

为什么,因为 \(x,y\) 可能是负数,那讨论一下吧。

  • 如果 \(x<0\) ,不管跑的多快,都肯定不可能到下一个点了,直接退掉。
  • 如果 \(y<0\) ,说明跑的太快,油桶没用完就快走到了,那此时的 \(t\) 加上 \(x\) 即可(对应花费的 \(x\sim min\) )。
  • 除此之外均套用以上的式子算 \(t\)

大概复杂度 \(O(n)\) 的样子。

那下面就是怎样二分了,二分什么作为答案?

题上说使最小花费最大,所以一个显然的想法便是二分花费,在这个题中就是二分车了,问题是这车的价值有单调性吗?那还玩什么呀。

所以这是这是在玩儿人,真正决定车子到目的地的唯一标准是汽油容量,所以直接二分容量得了,看最小满足条件的 \(V\) 是多少,搜一遍找一下满足 \(v[i]>V\)\(\min(w[i])\) 即可。

code

猜你喜欢

转载自www.cnblogs.com/G-hsm/p/CF729C.html