1210 連號區間數

2021-10-24 05:08:21 字數 654 閱讀 5292

傳送門

這道題是一道模擬題,首先我們應該會想到暴力做法,暴力的話,應該是兩層for迴圈,加乙個sort排序判斷是否是連號區間,sort排序的時間複雜度是o(nlogn),總的時間複雜度就是o(n^3logn),顯然會超時。我們想想怎麼能優化它,兩層for迴圈找區間不好進行優化,那麼我們來想想在判斷是否是連號區間這個地方優化一下程式,經過觀察可以發現連號區間的乙個性質,在區間[a,b]裡,如果這個區間滿足,區間的最大值-區間的最小值=b-a,那麼這個區間就是連號區間。優化之後,只剩下o(n^2)了,但是我們發現迴圈內部語句比較少,即迴圈的常數比較小,那麼1e8的複雜度還是能通過題的。

#include #include #include #include using namespace std;

const int maxn=1e4+7;

int a[maxn];

int main()

{ int n,ans=0;

cin>>n;

for(int i=0;i當我們看到一道題,如果沒思路的話,就先想想暴力,看能不能進行優化,不能優化的話,只能用暴力了(藍橋杯)。

藍橋杯 1210 連號區間數

acwing 原題通道 題意分析 給我們1 n的排列,讓我們求出這個排列中有多少個連號區間,連號區間也就是對這個區間排序之後,相鄰兩數相差為1。先分析資料範圍有105,那麼我們可以使用時間複雜度為o nlongn 的演算法,如果想不出來可以考慮o n2 的演算法。我們先來理一下暴力的思路 for 列...

藍橋杯2013 連號區間數

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

藍橋 PREV 7 連號區間數

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