百度之星小小粉絲度度熊

2021-08-06 04:22:56 字數 701 閱讀 8431

input

本題包含若干組測試資料。 第一行兩個整數n,m,表示有n個區間,這n個區間內的天數,度度熊都簽到了;m表示m張補簽卡。 接下來n行,每行兩個整數(l[i],r[i]),表示度度熊從第l[i]天到第r[i]天,都進行了簽到操作。 資料範圍: 1<=n<=100000 0<=m<=1000000000 0<=l[i]<=r[i]<=1000000000 注意,區間可能存在交叉的情況。

output

輸出度度熊最多連續簽到多少天。

sample input

copy

2 1

1 1

3 3

1 2

1 1

sample output

copy 3 3

hint

樣例一:度度熊補籤第2天,然後第1天、第二天和第三天都進行了簽到操作。

樣例二:度度熊補籤第2天和第3天。

這題的話考慮到m很大很大,所以複雜度肯定和他沒什麼關係。。

去重合併肯定是無腦的第一步啦

然後我們考慮列舉左端點,當然左端點是肯定是簽到操作的左端點,所以個數不會超過n

然後問題就是怎麼確定右端點。。

明顯滿足二分性嘛!

於是我們就可以看列舉乙個左端點,然後二分一下右端點就好了

時間複雜度o(

nlog

n)**不貼了。。我也看不到

小小粉絲度度熊 尺取)

input 本題包含若干組測試資料。第一行兩個整數n,m,表示有n個區間,這n個區間內的天數,度度熊都簽到了 m表示m張補簽卡。接下來n行,每行兩個整數 l i r i 表示度度熊從第l i 天到第r i 天,都進行了簽到操作。資料範圍 1 n 100000 0 m 1000000000 0 l i...

HDU6119 小小粉絲度度熊

思路 如果我們把覆蓋的區間和未覆蓋的分開,那麼我們可以構造出乙個序列 例如 7543598 粗體的表示中間沒有簽到的部分,而相鄰的部分就是已經連續簽到了的部分。那麼題目實際上就是我們可以單獨的覆蓋m天,然後怎麼樣覆蓋才能獲得最大的連續區間,然後求出這個連續的區間大小。嗯,根據範圍基本上確定是乙個nl...

hdu6119 小小粉絲度度熊

題目傳送門 思路 首先題目中說區間可能有交叉,所以第一步我們先處理一下區間重疊的情況把重疊的區間合併一下 第二步我們只需要尺取一下找最大區間就可以了 include include include include using namespace std const int maxn 1e9 7 st...