考虑分块,每块维护两个标记$ts,td$. 那么对于块中一个位置$i$,它的实际值为$i\times td+ts+v_i$. 修改的时候,对于整块,直接打标记,对于零散的暴力修改,然后重构凸壳,时间复杂度$O(\sqrt{n})$. 查询的时候在凸壳上二分即可,时间复杂度$O(\sqrt{n}\log n)$. #include<cstdio> #define N 100010 typedef long long ll; int n,m,cnt,lim,i,op,x,y,pos[N],st[N…