暑假訓練7 連號區間數 窮舉法 等差數列

2021-10-07 08:35:40 字數 703 閱讀 2913

題目描述

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

在1~n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是:

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

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

輸入第一行是乙個正整數n (1 < = n < = 50000), 表示全排列的規模。

第二行是n個不同的數字pi(1 < = pi < = n), 表示這n個數字的某一全排列。

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

樣例輸入

53 4 2 5 1

樣例輸出

9

//窮舉法+等差數列的性質 

#include

#include

#include

using

namespace std;

int a[

50005];

int n ;

int sum =0;

intmain()

int mx,mi;

for(

int i =

1;i<=n;i++)}

cout

}

1210 連號區間數

傳送門 這道題是一道模擬題,首先我們應該會想到暴力做法,暴力的話,應該是兩層for迴圈,加乙個sort排序判斷是否是連號區間,sort排序的時間複雜度是o nlogn 總的時間複雜度就是o n 3logn 顯然會超時。我們想想怎麼能優化它,兩層for迴圈找區間不好進行優化,那麼我們來想想在判斷是否是...

藍橋 PREV 7 連號區間數

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

藍橋杯C PREV 7 連號區間數

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則...