BJ80中 連續區間查詢

2021-09-05 03:39:20 字數 869 閱讀 3727

給出乙個1到n的排列,定義乙個區間是連續的區間當且僅當這個區間的值域也是個區間。

例如[1,3,2]是連續區間,但是[1,3]並不是。

再給出m次詢問,每次詢問乙個區間[l,r],需要求的是包含這個區間的長度最小的區間。如果有多個,請輸出左端點最小的那乙個。

第一行乙個整數n,表示排列長度。 接下來一行n個整數,用空格分開,表示給出的排列。 接下來一行乙個整數m,表示詢問個數。 接下來m行, 每行兩個整數l,r,表示詢問的區間。

對於每個詢問,輸出一行兩個整數表示你找到的最小區間。

copy

4

1 4 2 3

21 3

2 4

copy

1 4

2 4

對於 30%的資料,n≤1000。 均勻分布著 35%的資料,詢問區間長度為2。 對於100%的資料,n,m≤100000,1≤l≤r≤n。

這種類似的題已經做過很多次了,但是稍微變變形我就不回了qwq

我們會發現連續區間是不會重疊的,如果重疊了,那麼交集的區間也是乙個連續區間

那麼就可以發現對於一次查詢l,r,我們只要找到第乙個》=r的點作為右端點,能夠找到乙個<=l的左端點

那麼這一定是乙個最優的解

所以我們把詢問離線就可以做了

就是區間包含的所有長度為2的小區間的答案區間的並集,這是很顯然的

所以直接先把這些小區間查詢一下,然後st表log維護,就可以o(1)出答案了

BJ80中集訓 多執行緒

這算是一道比較綜合的思路題吧,考場上只想出了後半部分的貪心 考慮如果我們已經求出了一種可 況,那麼其他的答案不過只有三種 1.上公升序列給乙個給下降序列 2.下降序列給乙個給上公升序列 3.兩個序列交換乙個元素 因為如果超過乙個元素的操作,就會在另一種裡面形成不合法的情況 接下來只需要求出乙個可行解...

MySQL 8 0 連線不上

最近使用資料庫操作比較多,使用了jetbrain 家的 datagrip 去連線資料庫,但發現無論如何連線不上,但之前在 idea 裡是沒有問題的。經過排查後,原因在於沒有指定時區,mysql 8時區引數是必選的,沒有時區會連線不了。解決方法是新增乙個引數 servertimezone utc jd...

PHP5 6連線mysql8 0 遇到的坑

thinkphp5.1 報錯 php環境5.6 php7連線8.0 貌似木有這個問題 解決辦法 網上查詢得知mysql 8 預設字符集為utf8mb4,給出的解決方法都是設定mysql的預設字符集為老版本的utf8,然而其實只需要在mysql配置檔案中 mysqld 下加這兩行 character ...