Problem
【CTSC2018】混合果汁
Description
热衷于做黑暗料理,尤其是混合果汁。
商店里有种果汁,编号为。号果汁的美味度是每升价格为。在制作混合果汁时,还有一些特殊的规定,即在一瓶混合果汁中,号果汁最多只能添加升。
现在有个小朋友过来找要混合果汁喝,他们都希望用商店里的果汁制作成一瓶混合果汁。其中,第个小朋友希望他得到的混合果汁总价格不大于,体积不小于。
在上述这些限制条件下,小朋友们还希望混合果汁的美味度尽可能地高,一瓶混合果汁的美味度等于所有参与混合的果汁的美味度的最小值。请你计算每个小朋友能喝到的最美味的混合果汁的美味度。
Input
输入第一行包含两个正整数,表示果汁的种数和小朋友的数量。接下来行,每行三个正整数,表示号果汁的美味度为,每升价格为,在一瓶果汁中的添加上限为。
接下来行依次描述所有小朋友:每行两个数正整数描述一个小朋友,表示他最多能支付元钱,他想要至少升果汁。
Output
对于每个小朋友,输出一行,包含一个整数,表示他能喝到的最美味的混合果汁的美味度。如果无法满足他的需求,则输出。
Sample Input
1 | 3 4 |
Sample Output
1 | 3 |
HINT
对于所有的测试数据,保证,,。
测试点编号 | 其他限制 | ||
---|---|---|---|
无 | |||
无 | |||
无 | |||
无 |
标签:整体二分
线段树
Solution
整体二分常规题,考场上居然没做起签到题
考虑对每个询问二分答案,对于当前答案,将所有美味度大于等于的果汁提出来,从花费小的往花费大的贪心选判断钱是否够即可。这样复杂度是。
优化方式有两种:
- 二分判断用主席树优化。首先将所有果汁按美味度从大到小排序并构建以值为下标的值域线段树,存储的信息为价格在当前区间内的所有果汁的总体积以及总价格。在主席树上二分即可找到最小花费,这样复杂度为,总复杂度
- 对所有询问进行整体二分,中间用值域线段树维护。整体二分过程需要支持动态插入一种果汁,在线段树上二分得到最小花费。总复杂度。
Code
1 |
|