連號區間數 模擬列舉

2021-10-19 23:56:47 字數 954 閱讀 2453

題目鏈結

小明這些天一直在思考這樣乙個奇怪而有趣的問題:

在 1∼n 的某個排列中有多少個連號區間呢?

這裡所說的連號區間的定義是:

如果區間 [l,r] 裡的所有元素(即此排列的第 l 個到第 r 個元素)遞增排序後能得到乙個長度為 r−l+1 的「連續」數列,則稱這個區間連號區間。

當 n 很小的時候,小明可以很快地算出答案,但是當 n 變大的時候,問題就不是那麼簡單了,現在小明需要你的幫助。

第一行是乙個正整數 n,表示排列的規模。

第二行是 n 個不同的數字 pi,表示這 n 個數字的某一排列。

輸出乙個整數,表示不同連號區間的數目。

資料範圍

1≤n≤10000,

1≤pi≤n

43 2 4 1

53 4 2 5 1

9樣例解釋

第乙個用例中,有 7 個連號區間分別是:[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4]

第二個用例中,有 9 個連號區間分別是:[1,1],[1,2],[1,3],[1,4],[1,5],[2,2],[3,3],[4,4],[5,5]

就是找連續序列中,能排列成連號的區間.連號的話就有個性質,末端-起點就是序列的長度,因為題目說了是不同的數,所以不用考慮相同的問題,直接列舉就可以了,最差情況是o(108)但實際上是不會到那麼多的,所以可以雙重列舉加判斷就可以了

#include

#include

#include

#include

using namespace std;

int n;

const

int maxn=

1e4+5;

int a[maxn]

;int

main()

} cout

}

連號區間數

小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案,但是當n...

連號區間數

小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案,但是當n...

連號區間數

問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...