P1774 最接近神的人

2021-09-25 07:51:52 字數 1420 閱讀 9982

這個人當然是我啦,皮

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

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

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

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

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

輸出格式:

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

428

03

輸出樣例#1:

3

#include

#define m(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

#define mod 100003

using

namespace std;

inline

void

read

(int

&x)while

(ch>=

'0'&& ch<=

'9')

if(c==

'-')x=

-x;}

const

int n =5*

(1e5+7

);typedef

long

long ll;

ll n;

ll a[n]

;ll xv[n]

;ll tree[n]

;ll ans;

inline

bool cmp (

int a,

int b)

inline

int lb (

int x)

inline

void go_and_do_it (

int x)

inline

int find (

int x)

int main (

) sort (a +

1, a +

1+ n, cmp)

;for

(int i =

1; i <= n; i ++

) printf (

"%lld"

, ans)

;return0;

}

洛谷P1774 最接近神的人

用類似於桶的方法,樹狀陣列記錄原序列的某位置之前已經插入了多少個數,插入時樹狀陣列單點加1即可 先排一遍序,從大到小插入所有數在原序列的位置,統計每次插入時,在該元素前面元素的個數,前面的元素是先插入的,比該元素大,而在序列中的位置靠前,所以這個字首和是逆序對數 include include in...

最接近神的人 洛谷p1774 逆序對三種求法

題目位址 下面兩種方法均先處理離散化。求逆序對,倒序插入 插入乙個,統計比它小的數量,即ask 1,a i 1 順序也行ask要變 include include include using namespace std const int n 5e5 10 typedef long long ll ...

t099 最接近神的人

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