洛谷P5463 小魚比可愛(加強版) 題解

2022-05-22 16:33:13 字數 1280 閱讀 7878

寫部落格不易,來玩會?

歸併排序求逆序對大家應該很清楚了,我這裡就來講講如何用歸併排序求出這道題的答案

讓我們先觀察一下規律

舉個栗子,若存在一組逆序對a[3],a[4],n = 5,則這組逆序對存在於以下區間內:[ 1 , 4 ] , [ 1 , 5 ] , [ 2 , 4 ] , [ 2 , 5 ] , [ 3 , 4 ] , [ 3 , 5 ],共6個。我們可以畫個圖幫助理解:

將其推廣,若有逆序對a[ l ] , a[ r ],如圖所示:

則包含其的區間數,即該區間對答案的貢獻為(l + 1 - 1) * (n - r + 1 ) = l * (n-r+1)。

然後再用歸併排序即可。

注意兩個點:

1.本題要用乙個類似字首和的變數來記錄所有左半邊的位置之和,搜到的時候再從\(sum\)中減去,否則會t(至少我t了)

2.會爆精度。記得開__int 128或者打高精(反正我開的__int 128 qwq)

// author : kasugano_sora

#includeusing namespace std;

struct item

a[1100000] , b[1100000];

int n;

__int128 ans;

inline __int128 read()

while(ch >= '0' && ch <= '9')

return x * f;

}inline void print( __int128 x ) //int 128必備操作

if(x > 9)

print(x / 10);

putchar(x % 10 + '0');

}void msort( int l , int r )

int i = l , j = mid + 1 , k = l;

while(1) //歸併

}if(i > mid) for( ; j <= r ; j++ , k++ )

else for( ; i <= mid ; i++ , k++ )

for(int i = l ; i <= r ; i++ )

return ;

}int main()

msort(1 , n);

print(ans);

return 0;

}

洛谷 P1428 小魚比可愛

p1428 小魚比可愛 題目提供者yeszy 標籤 樹狀陣列 難度入門難度 題目描述 人比人,氣死人 魚比魚,難死魚。小魚最近參加了乙個 比可愛 比賽,比的是每只魚的可愛程度。參賽的魚被從左到右排成一排,頭都朝向左邊,然後每只魚會得到乙個整數數值,表示這只魚的可愛程度,很顯然整數越大,表示這只魚越可...

洛谷P1428 小魚比可愛

人比人,氣死人 魚比魚,難死魚。小魚最近參加了乙個 比可愛 比賽,比的是每只魚的可愛程度。參賽的魚被從左到右排成一排,頭都朝向左邊,然後每只魚會得到乙個整數數值,表示這只魚的可愛程度,很顯然整數越大,表示這只魚越可愛,而且任意兩隻魚的可愛程度可能一樣。由於所有的魚頭都朝向左邊,所以每只魚只能看見在它...

洛谷P1428小魚比可愛

我就是喜歡分塊 我的題庫 首先,先來放一下題面佔空間 人比人,氣死人 魚比魚,難死魚。小魚最近參加了乙個 比可愛 比賽,比的是每只魚的可愛程度。參賽的魚被從左到右排成一排,頭都朝向左邊,然後每只魚會得到乙個整數數值,表示這只魚的可愛程度,很顯然整數越大,表示這只魚越可愛,而且任意兩隻魚的可愛程度可能...