写法:线段树嗯淦,维护三元信息 (a,b,r) 表示当前修改是 x=popcount(x+a)+b,上一次修改操作后需要进行 r 次popcount()。
修改显然,若区间加时结点 r>0 则强制下传标记使当前结点 r=0 并进行相关修改,区间popcount则 a←a+b,b←0,++r。
单点查询一路推过去到叶结点就行,注意popcount()会使值域变为原数的对数级别,因此若 r≥4 直接看原数是否为 0,是则返回 0 ,否则返回 1,其余情况硬算就行。
whk搞吐了放松的时候想的,复杂度大概是对的,也不知道假没假。
以及这道题要是加个区间查能搞吗,上面这个写法大概率是不太行了吧。