一本通1543與眾不同

2022-05-08 02:03:15 字數 1381 閱讀 2396

時間限制: 1000 ms         記憶體限制: 524288 kb

題目描述

a 是某公司的 ceo,每個月都會有員工把公司的盈利資料送給 a,a 是個與眾不同的怪人,a 不注重盈利還是虧本,而是喜歡研究「完美序列」:一段連續的序列滿足序列中的數互不相同。

a 想知道區間 [l,r]之間最長的完美序列長度。

輸入格式

第一行兩個整數 n,m,n表示連續 n 個月,編號為 0到 n-1,m表示詢問的次數;

第二行 n個整數,第 i個數表示該公司第 i個月的盈利值 ai​;

接下來 m 行每行兩個整數 l,r,表示 a 詢問的區間。

輸出格式

輸出 m行,每行乙個整數對應詢問區間內的完美序列的最長長度。

樣例樣例輸入

9 2

2 5 4 1 2 3 6 2 4

0 82 6

樣例輸出

6

5

資料範圍與提示

對於全部資料,1≤

n,m≤

2×105

,0≤l

≤r≤n

−1,∣

ai∣≤10

6'>1≤n,m≤2×10^5,0≤l≤r≤n−1,∣ai∣≤10^6

sol:首先需要維護以i作為結束點時完美序列的最大長度,那麼記錄乙個start[i]表示以i為結束點時最長的序列的出發點,再用記錄一段區間內如[l,r]中的以pos(l<=pos<=r)結尾的最長值,可以用st表隨便搞一下,詢問時找到第乙個start[x]>=ql的x,答案就是max((x-1)-ql+1,st[x,qr])

#include using

namespace

std;

const

int n=200005,b=2000005

;int bin[23

],log[n];

int n,m,start[n],f[n][23

],last[b];

intmain()

log[

0]=-1

;

for(i=1;i)

scanf(

"%d%d

",&n,&m);

for(i=1;i<=n;i++)

for(i=1;i<=19;i++)

}for(i=1;i<=m;i++)

if(pos<=qr)

printf(

"%d\n

",ans);

}}/*

input

9 22 5 4 1 2 3 6 2 4

0 82 6

output65

*/

view code

佇列(一本通)

這道題重點是關係的轉換和初始化 include include include includeusing namespace std int a 101 記錄接著的的那個節點 int n,m int main int ans void bfs int x,int y int main cout in...

情感修煉一本通

實踐準則 經驗親密關係構成要素 了解 關心 相互依賴性 相互一致性 信任以及承諾 親密的伴侶彼此間有著廣泛而私密的了解。他們熟知彼此的經歷 愛好 情感和心願,而且一般不會把這些資訊透露給其他人。親密的伴侶關心對方,彼此能從對方身上感受到更多的關愛。如果人們認為自己的伴侶了解 理解並欣賞自己,其親密程...

一本通 確定進製

注意一些細節問題就可以了。1 餘數必定小於進製數 2 注意判斷數字範圍 1 p,q,r 1000000 開始以為p q會很大,但是實際 p q 1000000 因為p q r 10000000 所以,本身沒有必要使用高精度,但是如果本題目使用高精度來計算。則需要運用大整數的相關技巧來解決這個問題了。...