CF競賽題目講解_CF1269E(樹狀數(shù)組+樹狀數(shù)組+二分查找)
2022-08-09 12:56 作者:Clayton_Zhou | 我要投稿
// https://codeforces.com/contest/1269/problem/E
題意:
每次可以交換相鄰的數(shù)據(jù),求最小能夠出現(xiàn)1,2,..., k子序列的交換次數(shù)
思路:
先考慮逆序數(shù), 3 2 1,交換成 1 2 3的最小次數(shù),就是求 3 2 1這個序列的逆序數(shù)=3
這題稍微有點(diǎn)變化,就是3 2 1 中間可能還存在 其它數(shù)字,比如 3 4 5 2 1,要我們求 出現(xiàn) 3 2 1 的最小交換次數(shù);
可以想到,先把 4 和 5 剔除,將 3 2 1移動在一起,再求逆序數(shù);所以最后的答案 = 剔除4、5的次數(shù) + 321逆序數(shù)的值。
求逆序數(shù),套樹狀數(shù)組的模板即可。
所以重點(diǎn)是求剔除4和5多余元素的最少交換次數(shù),這里要用到二分查找,求 最合適的中間位置,使得左右平衡,從而交換次數(shù)最少。 二分查找使用第一個樹狀數(shù)組。
剔除4和5多余元素的最少交換次數(shù),使用另外一個樹狀數(shù)組。
標(biāo)簽: