小明這些天一直在思考這樣乙個奇怪而有趣的問題:
在1~n
的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是:
如果區間
[l, r]
裡的所有元素(即此排列的第
l個到第
r個元素)遞增排序後能得到乙個長度為
r-l+1
的「連續」數列,則稱這個區間連號區間。當n
很小的時候,小明可以很快地算出答案,但是當
n變大的時候,問題就不是那麼簡單了,現在小明需要你的幫助。
輸入格式:
第一行是乙個正整數
n (1 <= n <= 50000),
表示全排列的規模。
第二行是
n個不同的數字
pi(1 <= pi <= n)
,表示這
n個數字的某一全排列。
輸出格式:
輸出乙個整數,表示不同連號區間的數目。
示例:使用者輸入:
43 2 4 1
程式應輸出:
7使用者輸入:5
3 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]
雙層遍歷,第一層是1-n,第二層從第一層的下乙個數遍歷,int兩個l,r,如果第二層那個數的大於第一層的那個數,則用l記錄,否則用r記錄保證l-r是正值,為他們相差的數,如果j-i==l-r 則其連號
#include #include #include #includeusing namespace std;
int a[50005];
int main()
} cout<
藍橋杯 連號區間數
問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...
藍橋杯 連號區間數
問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...
藍橋杯 連號區間數
峰值記憶體消耗 64m cpu消耗 5000ms 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間...