小明這些天一直在思考這樣乙個奇怪而有趣的問題:
在 1∼n的某個排列中有多少個連號區間呢?
這裡所說的連號區間的定義是:
如果區間 [l,r] 裡的所有元素(即此排列的第 l 個到第 r 個元素)遞增排序後能得到乙個長度為 r−l+1 的「連續」數列,則稱這個區間連號區間。
當 n 很小的時候,小明可以很快地算出答案,但是當 n 變大的時候,問題就不是那麼簡單了,現在小明需要你的幫助。
輸入格式
第一行是乙個正整數 n,表示排列的規模。
第二行是 n 個不同的數字 pi,表示這 n 個數字的某一排列。
輸出格式
輸出乙個整數,表示不同連號區間的數目。
資料範圍
1≤n≤10000,
1≤pi≤n
輸入樣例1:
4
3 2 4 1
輸出樣例1:
7
輸入樣例2:
5
3 4 2 5 1
輸出樣例2:
9
樣例解釋
第乙個用例中,有 7 個連號區間分別是:[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4][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]、
注意: 樣例解釋中的左端點l和右端點r指的是:輸入序列中的第l個數和第r個數
思路:如果長為n的一段無重複數字排列排序後是連續的話,那麼這段數字排列中的最大值和最小值應該相差 n - 1
#include#include#includeusing namespace std;
int a[10010];
int res;
int main()
}cout
}
第四屆藍橋杯省賽C B組 字首判斷
如下的 判斷 needle start指向的串是否為haystack start指向的串的字首,如不是,則返回null。比如 abcd1234 就包含了 abc 為字首 char prefix char haystack start,char needle start if needle retur...
第四屆藍橋杯省賽C B組 翻硬幣
程式輸入 兩行等長的字串,分別表示初始狀態和要達到的目標狀態。每行的長度 1000 程式輸出 乙個整數,表示最小操作步數 例如 使用者輸入 o o 程式應該輸出 5再例如 使用者輸入 o o o o o o 程式應該輸出 1資源約定 峰值記憶體消耗 64m cpu消耗 1000ms 請嚴格按要求輸出...
翻硬幣 第四屆藍橋杯省賽C B組
題目描述 小明正在玩乙個 翻硬幣 的遊戲。桌上放著排成一排的若干硬幣。我們用 表示正面,用 o 表示反面 是小寫字母,不是零 比如,可能情形是 oo oooo 如果同時翻轉左邊的兩個硬幣,則變為 oooo oooo 現在小明的問題是 如果已知了初始狀態和要達到的目標狀態,每次只能同時翻轉相鄰的兩個硬...