點選做題**鏈結
題目描述
小a有乙個長度為n的排列。定義一段區間是"萌"的,當且僅當把區間中各個數排序後相鄰元素的差為1現在他想知道包含數x,y的長度最小的"萌"區間的左右端點
也就是說,我們需要找到長度最小的區間[l,r],滿足區間[l,r]是"萌"的,且同時包含數x和數y
如果有多個合法的區間,輸出左端點最靠左的方案。
輸入描述:
第一行三個整數n,x,y,分別表示序列長度,詢問的兩個數
第二行有n個整數表示序列內的元素,保證輸入為乙個排列
輸出描述:
輸出兩個整數,表示長度最小"萌"區間的左右端點
示例1
輸入
5 2 3
5 2 1 3 4
輸出
2 4說明
區間[2,4]=包含了2,3且為「萌」區間,可以證明沒有比這更優的方案
示例2
輸入
8 3 5
6 7 1 8 5 2 4 3
輸出
5 8備註:
保證2⩽n⩽
105,
1⩽x,
y⩽n2
⩽n⩽1
05,1
⩽x,y
⩽n"萌"的條件就是l - r == max - min(區間長度等於區間內的最大值減最小值)
那麼我們先在l到r的區間中求出最大值和最小值,然後再去找這個區間外面的但是值是最小值到最大值範圍中的數
所以我們只需要去模擬這個過程就好了,不斷的找l到r區間外面的數,不斷的更新最大值和最小值。
#include
#include
using
namespace std;
int pre[
100005];
intmain()
if( l>r )
swap
(l,r)
;int xx =
0, yy = n+1;
while
( r-l!=xx-yy )
//"萌"的條件就是r-l==max-min(區間長度等於區間內的最大值減最小值)
for(
int i=
1;i<=n;
++i)
//再去找這個區間外面的但是值是最小值到最大值範圍中的數
} cout << l <<
" "<< r << endl;
}
牛客寒假演算法基礎集訓營1 G 小a的排列 思維
這道題在比賽的時候思路已經想出來了,但是沒有實現出來.首先我們要知道乙個區間要滿足 萌 的條件必須是23456這樣的子串,那麼對於2356這樣的子串我們就需要去找4,所以我們可以知道 萌 的條件就是l r max min 區間長度等於區間內的最大值減最小值 那麼我們先在l到r的區間中求出最大值和最小...
阿里雲1核1G的意思
阿里雲1核1g什麼意思?這句話的意思是阿里雲1核cpu,1g記憶體配置機型。鑑於能問出這個問題的一定是新手,所以老魏就簡單介紹一下阿里雲1核1g記憶體的機型及如何選擇。2 阿里雲1核1g記憶體的伺服器,常用的熱門型別有以下幾種 1 核 1g 25g ssd雲盤 1 核 1g 40g 高效雲盤 1 核...
微軟1G網盤註冊方法
註冊方法 現在只要進入live skydrive 主頁 用自己hotmail msn 或live 帳號登入之後,就可以看到系統的註冊提示了,接受協議之後立馬即可開通windows live skydrive 服務。無需對賬戶資訊做任何設定。某些人可能會看到 你所在的地區不能使用此服務 的提示,此時只...