Processing math: 100%

[LibreOJ 2353][NOI2007]货币兑换

emmm做了一下这道神题……(我可能是少有的用动态凸包苟的?

首先DP方程长这样:

fi=max(fi1,fjAiRj+BiAjRj+Bj)

然后这个方程炒鸡复杂……首先fi1不要管了,然后设ai=fiAiRi+Bi。在xjb推了一番之后我们终于得到了截距式……

ajRjAiBi+fiBi=aj

但是这玩意太毒瘤了……斜率不可能单调的,这还好,在凸壳上二分/三分一下即可。但问题在于,横坐标也不单调……

这个时候就需要动态维护凸包了(其实是我不会CDQ),我直接把我向量集那题的二进制分组线段树搬了过来……(逃

代码: