cf 教育場4 ,區間交集個數

2021-07-09 04:21:22 字數 1039 閱讀 6872

題目大意:給你那個區間,問哪些區間斷的重疊區間的個數大於等於k,輸出最小區間數(要合併)

思路:將左右端點分開(不在乙個結構體裡)儲存在乙個陣列,加標記確定左端點還是右端點,排序,遇到左端點ans++,右端點ans--,大於等於k則記錄…………

最後區間合併時出現了問題,想了好久,慌了……最後有一點,排序時必須按雙重關鍵字排序!!讓左端點小於右端點,這樣可以解決點區間bug。。。

比賽結束後十分鐘過得…………pity

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define maxn 2000005

#define mod 1000000007

#define mem(a) memset(a , 0 , sizeof(a))

#define ll __int64

ll n , k;

struct node

*/ friend bool operator <(node a , node b)

}arr[maxn];

struct pointe

res[maxn] ;

int main()

sort(arr , arr + num );

int ans = 0;

int pos = 1;

int left = 0;

for(int i = 0 ; i < num ; i ++)

else if(ans < k && left)

}int pos2 = pos;

for(int i = 1 ; i < pos - 1 ; i ++)

printf("%d\n" , pos - 1);

res[0].flag = 0;

for(int i = 1 ; i < pos2 ; i ++)

{//cout << res[i].flag<

986 區間列表的交集

weekly contest 122的 區間列表的交集 給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。返回這兩個區間列表的交集。形式上,閉區間 a,b 其中a b 表示實數x的集合,而a x b。兩個閉區間的交集是一組實數,要麼為空集,要麼為閉區間。例如,1,3 和 2...

986 區間列表的交集

給定兩個由一些 閉區間 組成的列表,firstlist 和 secondlist 其中 firstlist i starti,endi 而 secondlist j startj,endj 每個區間列表都是成對 不相交 的,並且 已經排序 返回這 兩個區間列表的交集 形式上,閉區間 a,b 其中 a...

列表取交集 986 區間列表的交集

給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。返回這兩個區間列表的交集。形式上,閉區間 a,b 其中 a b 表示實數 x 的集合,而 a x b。兩個閉區間的交集是一組實數,要麼為空集,要麼為閉區間。例如,1,3 和 2,4 的交集為 2,3 示例 輸入 a 0,2 ...