设$x_j$,$y_j$为第$j$天能买的A,B券数量,$f_i$为第$i$天的最大收益.$f_i=\max_{1\le j<i}a_ix_j+b_iy_j$,最大化$f_i$即找一个点$(x_j,y_j)$,使得这个点和斜率$-a_i/b_i$所确定的直线截距最大.平衡树维护凸包即可,按$x$建平衡树,并维护斜率单调递减,判断删点时用叉积比较优越.比一般的CDQ还快,可能是因为凸包的点数不多,所以平衡树的log就比较小.另外就是不加eps理论上也没有问题. #include<cstdio&g…