洛谷P2448 無盡的生命 樹狀陣列

2021-09-26 22:02:47 字數 811 閱讀 9887

給出231−

12^-1

231−

1範圍的1−n

1-n1−

n的數列,然後有不超過k≤1

e5

k\leq1e5

k≤1e

5次交換,求問最終的逆序對的個數是多少。

被交換的值不超過2k2k

2k個,然後再考慮中間一段連續的數對逆序對的貢獻,把他們看作是同乙個點。樹狀陣列維護即可。

#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const ll inf=long_long_max;

const int n=2e5+7;

int x[n],y[n],tot=0;

int a[n],b[n];

ll t[n];

void add(int x,ll k)

ll query(int x)

int main()

sort(a+1,a+1+tot);

tot=unique(a+1,a+1+tot)-(a+1);

for(int i=1;i<=tot;i++) b[i]=i;

for(int i=1;i<=n;i++)

ll ans=0;

add(b[tot],1);

for(int i=tot-1;i>0;i--)

printf("%lld\n",ans);

return 0;

}

無盡的生命 洛谷p2448

逝者如斯夫,不捨晝夜!葉良辰認為,他的壽命是無限長的,而且每天都會進步。葉良辰的生命的第一天,他有1點能力值。第二天,有2點。第n天,就有n點。也就是s i i 但是調皮的小a使用時光機,告訴他第x天和第y天,就可以任意交換某兩天的能力值。即s x s y 小a玩啊玩,終於玩膩了。葉良辰 小a你給我...

洛谷2448 無盡的生命

題目 分析 首先離散化,然後樹狀陣列求所有操作過的數產生的逆序對,再求每個操作過的數與沒操作過的數產生的逆序對,因為原始序列有序,所以很方便。include include include include using namespace std const int tmax 200005 struc...

洛谷 2448 無盡的生命

逝者如斯夫,不捨晝夜!葉良辰認為,他的壽命是無限長的,而且每天都會進步。葉良辰的生命的第一天,他有1點能力值。第二天,有2點。第n天,就有n點。也就是s i i 但是調皮的小a使用時光機,告訴他第x天和第y天,就可以任意交換某兩天的能力值。即s x s y 小a玩啊玩,終於玩膩了。葉良辰 小a你給我...