二分答案 + 主席树.
将美味度离散化,并将所有果汁按照美味度从小到大排序.
可以用主席树维护单价区间能购买到的最大体积之和与总金额之和,对美味度可持久化.
对于每个询问,二分答案 $ans$ ,只考虑美味度 $\ge ans$ 的果汁.
显然应该贪心地选,尽可能选便宜的凑够体积.
于是查询时在主席树上将美味度 $\ge ans$ 的部分抠出来,进行二分.
若左儿子内的体积够,就返回左儿子的答案.
否则将需要的体积减去左儿子内的体积,返回右儿子的答案加上左儿子的所有价格.
1 |
|
夢はここに 思い出は遠くに
二分答案 + 主席树.
将美味度离散化,并将所有果汁按照美味度从小到大排序.
可以用主席树维护单价区间能购买到的最大体积之和与总金额之和,对美味度可持久化.
对于每个询问,二分答案 $ans$ ,只考虑美味度 $\ge ans$ 的果汁.
显然应该贪心地选,尽可能选便宜的凑够体积.
于是查询时在主席树上将美味度 $\ge ans$ 的部分抠出来,进行二分.
若左儿子内的体积够,就返回左儿子的答案.
否则将需要的体积减去左儿子内的体积,返回右儿子的答案加上左儿子的所有价格.
1 | #include<bits/stdc++.h> |