區間貪心總結

2021-08-20 20:38:20 字數 744 閱讀 2708

一、線段覆蓋

n個開區間(ai,bi),選擇盡量多個區間,使得這些區間兩兩不相交

右端點排序(<)兼顧左端點(>),再從左到右遇到不相交的就選

sort(he+1,he+n+1,cmp);

int tot=0,now=-1000;

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

printf("%d", tot);

二、區間選點

n個閉區間[ai,bi],選擇盡量少的點,使得每個區間至少有乙個點

右端點排序(<)兼顧左端點(>),每次選擇可選區間的最後乙個點

sort(he+1,he+n+1,cmp);

int tot=0,now=-1;

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

printf("%d", tot);

三、區間覆蓋

數軸上有n個閉區間[ai,bi],選擇盡量少的區間覆蓋一條指定的線段[s,t]

左端點排序(<)兼顧右端點(<),每次選擇從當前起點能覆蓋到的最長的區間

sort(he+1,he+n+1,cmp);

int tot=0,now=-1,to=-1;

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

printf("%d", tot);

貪心 區間貪心

給出n個開區間 x,y 從中選擇盡可能多的開區間,使得這些開區間兩兩沒有交集。先對左端點 從大到小 排序,如果左端點相同就對右端點從小到大排序。區間不相交問題 include include using namespace std const int maxn 110 區間結構體 struct in...

貪心演算法 區間排程問題總結

問題定義 存在單一資源,有一組以時間區間形式表示的資源請求reqs 第i個請求希望占用資源一段時間來完成某些任務,這段時間開始於begin i 終止於end i 如果兩個請求req i和req j在時間區間上沒有重疊,則說這兩個請求是相容的,求出這組請求的最大相容子集 最優子集 舉個例子 有一間多 ...

(貪心)整數區間

題目 找到乙個含元素個數最少的集合,使得對於每乙個區間,都至少有乙個整數屬於該集合,輸出該集合的元素個數。輸入 首行包括區間的數目n,1 n 10000,接下來的n行,每行包括兩個整數a,b,被一空格隔開,0 a b 10000,它們是某乙個區間的開始值和結束值。輸出 第一行集合元素的個數,對於每乙...