題目:
分析:首先離散化,然後樹狀陣列求所有操作過的數產生的逆序對,再求每個操作過的數與沒操作過的數產生的逆序對,因為原始序列有序,所以很方便。
**:
#include
#include
#include
#include
using
namespace
std;
const
int tmax=200005;
struct node;
node g[tmax];
int k,last,c1[tmax],c2[tmax];
long
long
int ans;
map f,fx;
bool cmp(node lhs,node rhs)
sort(g+1,g+1+last,cmp2);
return;
}int lowbit(int x)
int sum(int x)
void add(int x)
void work()
else
}cout
}int main()
else pa=f[a];
if(!f.count(b))
else pb=f[b];
swap(g[pa].x,g[pb].x);
}init();
work();
return
0;}
洛谷 2448 無盡的生命
逝者如斯夫,不捨晝夜!葉良辰認為,他的壽命是無限長的,而且每天都會進步。葉良辰的生命的第一天,他有1點能力值。第二天,有2點。第n天,就有n點。也就是s i i 但是調皮的小a使用時光機,告訴他第x天和第y天,就可以任意交換某兩天的能力值。即s x s y 小a玩啊玩,終於玩膩了。葉良辰 小a你給我...
無盡的生命 洛谷p2448
逝者如斯夫,不捨晝夜!葉良辰認為,他的壽命是無限長的,而且每天都會進步。葉良辰的生命的第一天,他有1點能力值。第二天,有2點。第n天,就有n點。也就是s i i 但是調皮的小a使用時光機,告訴他第x天和第y天,就可以任意交換某兩天的能力值。即s x s y 小a玩啊玩,終於玩膩了。葉良辰 小a你給我...
洛谷P2448 無盡的生命 樹狀陣列
給出231 12 1 231 1範圍的1 n 1 n1 n的數列,然後有不超過k 1 e5 k leq1e5 k 1e 5次交換,求問最終的逆序對的個數是多少。被交換的值不超過2k2k 2k個,然後再考慮中間一段連續的數對逆序對的貢獻,把他們看作是同乙個點。樹狀陣列維護即可。includeusing...