1G 小a的排列(C )

2022-09-15 16:06:10 字數 1379 閱讀 6111

點選做題**鏈結

題目描述

小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 服務。無需對賬戶資訊做任何設定。某些人可能會看到 你所在的地區不能使用此服務 的提示,此時只...