麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

連號區(qū)間數(shù)

2019-11-14 09:49:12
字體:
供稿:網(wǎng)友

連號區(qū)間數(shù)

小明這些天一直在思考這樣一個奇怪而有趣的問題: 在1~N的某個全排列中有多少個連號區(qū)間呢?這里所說的連號區(qū)間的定義是: 如果區(qū)間[L, R] 里的所有元素(即此排列的第L個到第R個元素)遞增排序后能得到一個長度為R-L+1的“連續(xù)”數(shù)列,則稱這個區(qū)間連號區(qū)間。 當(dāng)N很小的時候,小明可以很快地算出答案,但是當(dāng)N變大的時候,問題就不是那么簡單了,現(xiàn)在小明需要你的幫助。 輸入格式

第一行是一個正整數(shù)N (1 <= N <= 50000), 表示全排列的規(guī)模。 第二行是N個不同的數(shù)字Pi(1 <= Pi <= N), 表示這N個數(shù)字的某一全排列。 輸出格式

輸出一個整數(shù),表示不同連號區(qū)間的數(shù)目。 樣例輸入1

4 3 2 4 1 樣例輸出1

7 樣例輸入2

5 3 4 2 5 1 樣例輸出2

9

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;int a[50005],n;int main(){ cin >> n; for(int i = 0; i < n; i++)scanf("%d",&a[i]); int sum = 0; for(int i = 0;i < n; i++) { int maxn = 1; int minn = n; for(int j = i; j < n;j++) { if(a[j] > maxn)maxn = a[j]; if(minn > a[j])minn = a[j]; //巧妙的一個技巧就是,如果區(qū)間的最大值(第j個數(shù)的值)-最小值(第i個數(shù)的值)剛好等于j - i 的值 if(maxn - minn == j-i){// cout << maxn << " " << minn << endl; sum++; } } } cout << sum << endl; return 0;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 一级成人在线 | 久久精品久 | 人禽l交免费视频 | 中文字幕精品一二三四五六七八 | 国内久久久久 | 国产69精品久久99不卡免费版 | 国内免费视频成人精品 | 久久蜜臀一区二区三区av | 黄色网址免费在线播放 | 久久国产亚洲视频 | 毛片成人 | 久久综合av | 宅男噜噜噜66国产免费观看 | 黄色美女网站免费看 | aa国产视频一区二区 | 羞羞的动漫在线观看 | 国产成年人在线观看 | 国产精品久久久久久久四虎电影 | 斗罗破苍穹在线观看免费完整观看 | 欧美 亚洲 视频 | 99精品国产一区二区三区 | 黄色高清av | 美女被免费网站在线软件 | 在线天堂资源 | 国产在线精品区 | 久久久久中精品中文字幕19 | 二区视频 | 爱爱插插视频 | 免费国产在线精品 | av电影院在线观看 | 夜夜夜操操操 | 免费播放av | 亚洲国产中文字幕 | 成人在线精品视频 | 亚洲国产网站 | 免费看一级毛片欧美 | 久久蜜桃香蕉精品一区二区三区 | 色猫av| 成人午夜免费福利 | 91久久国产综合久久91猫猫 | 国产精品久久亚洲 |