题解 P3730 【曼哈顿交易】
用权值树状数组卡了半天没卡过/kk
然后用分块随便过了。。。
这道题很明显的莫队套一个求第
但是如果用权值树状数组/线段树是
那么考虑一种增加/减少均是
然后每次查询时
所以用分块的复杂度是
因为这道题的分块很特殊所以可以用一个珂技。
int t[10005];
int t2[100005];
int len;
void insert(int w,int v)
{
if(w==0) return;
t[w/len]+=v;
t2[w]+=v;
}
int que(int k)
{
int i;
for(i=0;k>t[i];i++)
k-=t[i];
for(i=i*len;k>t2[i];i++)
k-=t2[i];
return i;
}
常数巨小。