摘要:
由于a_i 不变 容易想到将值<K的点都看成死点去掉 那么 原序列就被切分成若干小段 题目变成 求跨段的0-1对数+有死点参与时的01对数仅考虑跨段对数的话 设去掉死点后的0有sa个 1有sb 个 每段有a[i]个0, b[i] 个1 那么跨段对数=sa*sb-SUM(a[i]*b[i])假设0操作将第k段的某个01位反转了,a[k]->a[k]+da,b[k]->b[k]-da于是跨段对数变成(sa+da)*(sb-db)-SUM(a[i]*b[i] ,i!=k) -(a[k]+da)*(b[k]-da)= sa*sb-SUM(a[i]*b[i]) + da*( sb-sa
阅读全文