BZOJ 4769 超級貞魚 歸併排序

2021-08-04 09:57:49 字數 1770 閱讀 3382

time limit: 2 sec  memory limit: 64 mb

submit: 123  solved: 32

[submit][status][discuss]

馬達加斯加貞魚是一種神奇的雙腳貞魚,它們把自己的智慧型寫在腳上--每只貞魚的左腳和右腳上個有乙個數。有一天,k只貞魚興致來潮,排成一列,從左到右第i只貞魚會在右腳寫ai,左腳上寫上i,第二年,這k只貞魚按右腳的數從小到大排成一列,然後,它們決定重編號,從左到右第i只貞魚會在右腳上寫上左腳的數,在左腳上寫i,第三年,它們按第二年的方法重排列、重編號......n年後,對於從左到右第i和第j貞魚,若i

一共3行,第一行乙個正整數k,第二行k個數從左到右輸入ai,第三行乙個正整數n。

1≤ai≤10^9,1≤k≤5*10^6,0≤n≤5000

乙個整數,表示"超級貞魚"對數。

65 2 6 3 1 707

模擬一下過程就會發現就是兩個數列交替出現

根據m的奇偶性,把數列搞出來

之後求一遍逆序對就行了

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

inline int read()

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

return x*f;

}void print(ll x)

const int n=1000100;

struct pb[n];

inline bool cmp(const p &x,const p &y)

tmp[++cnt]=a[i++];

} for(;i<=mid;++i)tmp[++cnt]=a[i];

for(;j<=r;++j)tmp[++cnt]=a[j];

for(i=l;i<=r;++i)a[i]=tmp[i];

}int main()/*6

5 2 6 3 1 707

*/

就在剛才。。。發現。。。

其實m的限制毫無卵用,直接求逆序對就好了。。。

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

inline int read()

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

return x*f;

}void print(ll x)

const int n=1000100;

int tmp[n],a[n],n,m;

ll ans;

void merger_sort(int l,int r)

tmp[++cnt]=a[i++];

} for(;i<=mid;++i)tmp[++cnt]=a[i];

for(;j<=r;++j)tmp[++cnt]=a[j];

for(i=l;i<=r;++i)a[i]=tmp[i];

}int main()/*6

5 2 6 3 1 707

*/

bzoj4769超級貞魚 歸併排序

description 馬達加斯加貞魚是一種神奇的雙腳貞魚,它們把自己的智慧型寫在腳上 每只貞魚的左腳和右腳上個有乙個數。有一天,k只貞魚興致來潮 1 k 10 5 排成一列,從左到右第i只貞魚會在右腳寫ai 1 ai 10 9 左腳上寫上i 1 i k 第二年,這k只貞魚按右腳的數從小到大排成一列...

bzoj 4769 超級貞魚 歸併排序

time limit 1 sec memory limit 128 mb 馬達加斯加貞魚是一種神奇的雙腳貞魚,它們把自己的智慧型寫在腳上 每只貞魚的左腳和右腳上個有乙個數。有一天,k只貞魚興致來潮 1 k 10 5 排成一列,從左到右第i只貞魚會在右腳寫ai 1 ai 10 9 左腳上寫上i 1 i...

超級鋼琴 BZOJ 2006

超級鋼琴 問題描述 小z是乙個小有名氣的鋼琴家,最近c博士送給了小z一架超級鋼琴,小z希望能夠用這架鋼琴創作出世界上最美妙的 這架超級鋼琴可以彈奏出n個音符,編號為1至n。第i個音符的美妙度為ai,其中ai可正可負。乙個 超級 和弦 由若干個編號連續的音符組成,包含的音符個數不少於l且不多於r。我們...