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)\)

然后就做完了。

record

posted @ 2025-05-26 12:39  z_Sqr  阅读(16)  评论(0)    收藏  举报