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...