有 $A,B$ 两种金券,它们每天的价值都不同,在第 $i$ 天时分别为 $A_i,B_i$你可以用手中的金券换取相应价值的钱,或用钱兑换相同价值的金券,但兑换到的两种金券的数量之比是一个定值,这个定值在第 $i$ 天为 $R_i$
现给出 $n$天中两种金券的价值$R$,以及你初始时拥有的资金 $S$,求 $n$ 天后你最多能有多少钱。
注:一定存在一种最优方案,满足:每次兑换金券花光所有的钱,每次换钱时花掉所有的金券。
有提示了:一定是某一天用完所有,然后某一天再卖掉所有。
设$dp[i]$表示第$i$天,买完拥有最多$A$卷个数。
全部无规律,但是应该是维护一个上凸包。
动态凸包代补
CDQ分治
- 将所有决策点(从$1$到$n$)存入数组$p$中。
- p中的点按斜率从大到小排序。
- 设当前处理的决策点范围为$l到r$,对应$p$数组中的·第$fl$到第$fr$个元素。
- 把前$mid$个询问放在左边,后$mid$个放在右边
- 递归处理$(l,mid)$
- 由于斜率右侧无影响,为单调,所有将左侧建立凸包,右侧单指针寻找即可。
- 最后处理$(mid+1,r)$,并且合并使得$(l,r)$按照$x$单调增排序。
代码
1 |
|