小明這些天一直在思考這樣乙個奇怪而有趣的問題:
在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使用者輸入:
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]
資源約定:
峰值記憶體消耗 < 64m
cpu消耗 < 5000ms
對於區間[l, r] ,如果該區間是連號區間,即區間內數字連續且遞增。
即區間內max-min=l-r
#include#includeusing namespace std;
int a[50010],b[50010];
int num=0;
int main()
for(int i=0; immax)
mmax=a[j];
if(a[j]mmin=a[j];
if(i==j)
num++;
else}}
cout
}
藍橋歷屆真題 連號區間數
試題 歷屆試題 連號區間數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1...
藍橋杯歷題 連號區間數
給定乙個n,再給n個數是1 n的某一全排列。你要做的就是計算存在多少個區間 l,r 其重新排列的遞增序列是連續的。r l 1為去除區間兩端,區間中間還有的幾個元素 當然如果r l時得到的結果是 1 設區間最大值為 max,最小值為 min,則 max min 1為連續遞增序列中 min 到 max ...
藍橋杯2013 連號區間數
連號區間數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,...