最接近神的人 NOI導刊2010提高(02)

2022-05-08 01:36:09 字數 1634 閱讀 4213

破解了符文之語,小ff開啟了通往地下的道路。當他走到最底層時,發現正前方有一扇巨石門,門上雕刻著一幅古代人進行某種活動的圖案。而石門上方用古代文寫著「神的殿堂」。小ff猜想裡面應該就有王室的遺產了。但現在的問題是如何開啟這扇門……

仔細研究後,他發現門上的圖案大概是說:古代人認為只有智者才是最容易接近神明的。而最聰明的人往往通過一種儀式選拔出來。儀式大概是指,即將隱退的智者為他的候選人寫下一串無序的數字,並讓他們進行一種操作,即交換序列中相鄰的兩個元素。而用最少的交換次數使原序列變成不下降序列的人即是下一任智者。

小ff發現門上同樣有著n個數字。於是他認為開啟這扇門的秘訣就是找到讓這個序列變成不下降序列所需要的最小次數。但小ff不會……只好又找到了你,並答應事成之後與你三七分……

輸入格式:

第一行為乙個整數n,表示序列長度

第二行為n個整數,表示序列中每個元素。

輸出格式:

乙個整數ans,即最少操作次數。

輸入樣例#1: 

4

2 8 0 3

輸出樣例#1: 

3

對於30%的資料1≤n≤10^4。

對於100%的資料1≤n≤5*10^5;

-maxlongint≤a[i]≤maxlongint。

樣例說明:開始序列為2 8 0 3,目標序列為0 2 3 8,可進行三次操作的目標序列:

1.swap (8,0):2  0  8  3

2.swap (2,0):0 2 8 3

3.swap (8,3):0 2 3 8

分析:

一道類似於模板題但又不是模板題的題目???一道較為簡單的樹狀陣列題目,但要轉換問題。

code:

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7const

int m=1000005;8

intn,a[m],b[m];

9long

long

ans;

10int

read()

13while (c>='

0'&&c<='

9') ans=(ans<<1)+(ans<<3)+(c^48),c=getchar();

14if (f) return ans;return ~ans+1;15

}16void merge(int l,int

r)23

else b[++tot]=a[rr++];

24while (ll<=mid) b[++tot]=a[ll++];

25while (rr<=r) b[++tot]=a[rr++];

26for (int i=l;i<=r;i++) a[i]=b[i-l+1

];27

return;28

}29intmain()

P1774 最接近神的人

這個人當然是我啦,皮 破解了符文之語,小ff開啟了通往地下的道路。當他走到最底層時,發現正前方有一扇巨石門,門上雕刻著一幅古代人進行某種活動的圖案。而石門上方用古代文寫著 神的殿堂 小ff猜想裡面應該就有王室的遺產了。但現在的問題是如何開啟這扇門 仔細研究後,他發現門上的圖案大概是說 古代人認為只有...

t099 最接近神的人

time limit 1 second memory limit 128 mb 問題描述 破解了符文之語,小ff開啟了通往地下的道路。當他走到最底層時,發現正前方有一扇巨石門,門上雕刻著一幅古代人進行某種活 動的圖案。而石門上方用古代文寫著 神的殿堂 小ff猜想裡面應該就有王室的遺產了。但現在的問題...

UOJ 51 最接近神的人

題目描述 破解了符文之語,小ff開啟了通往地下的道路。當他走到最底層時,發現正前方有一扇巨石門,門上雕刻著一幅古代人進行某種活動的圖案。而石門上方用古代文寫著 神的殿堂 小ff猜想裡面應該就有王室的遺產了。但現在的問題是如何開啟這扇門 仔細研究後,他發現門上的圖案大概是說 古代人認為只有智者才是最容...