寫部落格不易,來玩會?
歸併排序求逆序對大家應該很清楚了,我這裡就來講講如何用歸併排序求出這道題的答案
讓我們先觀察一下規律
舉個栗子,若存在一組逆序對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小魚比可愛
我就是喜歡分塊 我的題庫 首先,先來放一下題面佔空間 人比人,氣死人 魚比魚,難死魚。小魚最近參加了乙個 比可愛 比賽,比的是每只魚的可愛程度。參賽的魚被從左到右排成一排,頭都朝向左邊,然後每只魚會得到乙個整數數值,表示這只魚的可愛程度,很顯然整數越大,表示這只魚越可愛,而且任意兩隻魚的可愛程度可能...