BIT 做题记录
从 2025.5.26 开始记录。
P2448 无尽的生命
观察到这题数据非常的大,于是离散化,用 \(A_i\) 存储 \(i\) 离散化前的原值。
按题目的顺序交换,然后得到每个数现在所处的位置。
分两种情况:
-
交换后的数与交换后的数计算答案,经典静态逆序对问题,BIT 解决即可。
-
交换后的数与未交换的数计算答案,对于一个交换后的数,设原数离散化后为 \(b_i\),交换后位于离散化值 \(pos_{b_i}\) 的数的原位置上。若 \(b_i < pos_{b_i}\),则对于 \(b_i\),\(A_{b_i} \sim A_{pos_{b_i}}\) 中未交换的数的个数减去已交换的数的个数是该数的贡献,即 \((A_{pos_{b_i}}-A_{b_i}+1) - (pos_{b_i}-b_i+1)\)。同理若 \(b_i > pos_{b_i}\),则 \(A_{pos_{b_i}} \sim A_{b_i}\) 中未交换的数的个数减去已交换的数的个数是该数的贡献,即 \((A_{b_i}-A_{pos_{b_i}}+1) - (b_i-pos_{b_i}+1)\)。
然后就做完了。

浙公网安备 33010602011771号