bzoj5382
题意
做法
先考虑这样一个问题
\(n\times m\)的方格,可以增加一个位置的权值,查询一个位置左上角之和
有两种显然的做法:
\(O(1)\)修改这个位置,\(O(nm)\)查询扫左上角
\(O(nm)\)修改给右下角加值,\(O(1)\)查询当前位置的值
然后又一个稍微平衡一下的方法,就是修改时\((x,y)\)固定\(x\),\(y\)往更大的移,然后给这些位置加上去。查询时固定\(y\),\(x\)往更小的位置移过去。当然坐标可以换一下,这样就可以做到\(O(max(n,m))\)
同理将\(val_1\)表示成\(\prod\limits_{i=1}^c p_i^{k_i}\),然后平衡次幂就是\(O(\sqrt{\prod\limits_{i=1}^c k_i})\)级别的