小小粉絲度度熊 尺取)

2022-05-24 17:21:10 字數 953 閱讀 2096

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

2 1

1 13 3

1 21 1

sample output

3

3

hint

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

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

**:

#include#include#include#include#include#include#include#include#include#includeconst int maxn=1e5+5;

typedef long long ll;

using namespace std;

struct node

tmp[maxn],a[maxn];

ll d[maxn];

bool cmp(node x,node y)

}int main(void)

sum = max(sum,a[i+1].r-a[l].l+1+m-t1);

}printf("%lld\n",sum);

}return 0;

}

HDU6119 小小粉絲度度熊

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

hdu6119 小小粉絲度度熊

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

百度之星小小粉絲度度熊

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