區間檢測 range

2022-04-01 05:40:20 字數 1339 閱讀 8306

時間限制: 1 sec  記憶體限制: 128 mb

題目描述

給定乙個長度為n的序列,進行m次檢測,每次檢測某個區間中,是否有重複的數。

輸入

第一行,兩個整數n和m,表示序列中元素的個數以及需要檢測的次數。

第二行n個元素,表示序列中的元素。 

接下來m行,每行兩個整數l和r(l≤r),表示需要檢測的區間。

輸出

對於每個詢問,如果這個區間沒有重複的數字,輸出1,否則輸0。

樣例

5 21 2 3 4 1

1 41 510

提示

對於30%的資料,n和m的範圍[1,500];

對於50%的資料,n和m的範圍[1,5000];

對於80%的資料,n和m的範圍[1,50000],序列中的元素範圍[0,105];

對於100%的資料,n和m的範圍[1,500000],序列中的元素範圍[0,109]

這就是題目了

這個我爆蛋了。。。

艹其實不難,但是我還是寫的題目少了

這個題面非常的清晰,就不用再解釋了

判斷乙個區間中有沒有相同的數,把他給分割成為子問題,就是判斷每乙個數在這個區間內有沒有相同的數

那麼就很自然的想到維護每乙個數前面和後面相同的數在什麼位置就好了qwq

可是有必要嗎awa

只用維護前面的就好了qwq

仔細想想就好了awa

如果這個區間裡面有乙個數重複了,那麼肯定會有乙個數前面乙個和他相同的數在這個區間中awa

所以就方便多了qwq

pre[i]表示上乙個值為a[i]的數出現的位置

題目等價於判斷min(pre[l...r])是否小於l

因為pre[1...l-1]顯然是小於l的,所有可以直接判斷min(pre[1...r])是否小於l

快樂code

#include#define ll long long

using

namespace

std;

int n,m,a[5000001],max[500001][30

];map

pre;

inline ll read()

ll ask(ll l,ll r)

void

work()

}}int

main()

work();

while(m--)

return0;

}

Swift 中的Range型別和 Range運算子

swift中有五個最常用的range型別 closedrange a b range a 對應的,有五個range運算子,用來定義上面的range型別 closed range operator a b half open range operator a closedrange型別代表乙個閉區間 ...

Range表分割槽

由於業務需求需要對錶進行分割槽所以在此記錄一下 常見的分割槽有 list range hash 比較常用 還有組合分割槽 在此討論的是range 首先建立range分割槽 create table tb validate id number 15 not null,mdn varchar2 20 c...

range函式詳解

range 構造器的引數必須為整數 可以是內建的 int 或任何實現了index特殊方法的物件 如果省略 step 引數,其預設值為 1。如果省略 start 引數,其預設值為 0,如果 step 為零則會引發 valueerror。如果 step 為正值,確定 range r 內容的公式為 r i...