time limit: 1 sec memory limit: 128 mb
馬達加斯加貞魚是一種神奇的雙腳貞魚,它們把自己的智慧型寫在腳上——每只貞魚的左腳和右腳上個有乙個數。有一天,k只貞魚興致來潮(1≤k≤10^5),排成一列,從左到右第i只貞魚會在右腳寫ai(1≤ai≤10^9),左腳上寫上i(1≤i≤k),第二年,這k只貞魚按右腳的數從小到大排成一列,然後,它們決定重編號,從左到右第i只貞魚會在右腳上寫上左腳的數,在左腳上寫i,第三年,它們按第二年的方法重排列、重編號......n年後(1≤n≤10^5),對於從左到右第i和第j貞魚,若i一共3行,第一行乙個正整數k(1≤k≤10^5),第二行k個數從左到右輸入ai(1≤ai≤10^9),第三行乙個正整數n(1≤n≤10^5)。
乙個整數,表示「超級貞魚」對數。
65 2 6 3 1 7
0
7對於全部資料:ai≤10^9。
30%的資料:n,k<=400;
70%的資料:n,k<=10000;
100%的資料:n,k<=100000;
命題by benny
roj原創
upd: 好吧,經過出題人的不懈努力,我的程式終於tle了。。qwq
那麼優化一下,聽唐大爺說不論怎麼變換,逆序對的數總是不變的(似乎好有道理qaq),那麼離散化什麼的都不需要辣,只要一次歸併排序就好
#include#include#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define n 2000100 inline
intread()
while(ch>='
0'&&ch<='9')
return x*f;
}int
a[n],tmp[n],k;
ll n,ji;
void gb(int l,int
r) tmp[cnt++]=a[h1];
h1++;
}for(int i=h1;i<=mid;i++) tmp[cnt++]=a[i];
for(int i=h2;i<=r;i++) tmp[cnt++]=a[i];
for(int i=l;i<=r;i++) a[i]=tmp[i];
}int
main()
歸併排序裸題,我們會發現當重排次數 n 為偶數時,其等價於原數列,(其實就是相當於乙個二元的結構體,一次按第一位排序,第二次按第二位排序),然後就是相當於求乙個數列的逆序對個數
初始的時候先離散化一下就好(tle)
#include#include#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define n 1000100 inline
intread()
while(ch>='
0'&&ch<='9')
return x*f;
}int
n,a[n],tmp[n],k;
ll ji;
void gb(int l,int
r) tmp[cnt++]=a[h1];
h1++;
}for(int i=h1;i<=mid;i++) tmp[cnt++]=a[i];
for(int i=h2;i<=r;i++) tmp[cnt++]=a[i];
for(int i=l;i<=r;i++) a[i]=tmp[i];
}struct qaztp[n];
bool cmp(qaz q,qaz z)
intmain()
sort(tp+1,tp+n+1
,cmp);
for(int i=1;i<=n;i++) a[tp[i].p]=i;
k=read();
if(k&1
)
sort(tp+1,tp+n+1
,cmp);
for(int i=1;i<=n;i++) a[i]=tp[i].p;
}gb(
1,n);
printf(
"%lld\n
",ji);
}
bzoj4769超級貞魚 歸併排序
description 馬達加斯加貞魚是一種神奇的雙腳貞魚,它們把自己的智慧型寫在腳上 每只貞魚的左腳和右腳上個有乙個數。有一天,k只貞魚興致來潮 1 k 10 5 排成一列,從左到右第i只貞魚會在右腳寫ai 1 ai 10 9 左腳上寫上i 1 i k 第二年,這k只貞魚按右腳的數從小到大排成一列...
BZOJ 4769 超級貞魚 歸併排序
time limit 2 sec memory limit 64 mb submit 123 solved 32 submit status discuss 馬達加斯加貞魚是一種神奇的雙腳貞魚,它們把自己的智慧型寫在腳上 每只貞魚的左腳和右腳上個有乙個數。有一天,k只貞魚興致來潮,排成一列,從左到右...
超級鋼琴 BZOJ 2006
超級鋼琴 問題描述 小z是乙個小有名氣的鋼琴家,最近c博士送給了小z一架超級鋼琴,小z希望能夠用這架鋼琴創作出世界上最美妙的 這架超級鋼琴可以彈奏出n個音符,編號為1至n。第i個音符的美妙度為ai,其中ai可正可負。乙個 超級 和弦 由若干個編號連續的音符組成,包含的音符個數不少於l且不多於r。我們...