區間完全覆蓋問題(貪心)

2022-05-13 20:36:07 字數 741 閱讀 6997

題意:在乙個矩形的花壇上,中間水平放了一排噴水裝置,澆灌半徑為r,問最少需要多少個裝置可以潤濕整個花壇。

將每個裝置轉換成一條線段,就變成了求最少的線段覆蓋整個區間。

將各線段左端點從小到大排序

設已覆蓋區間的右端點為ed

每次貪心選擇起點小於ed的線段中右端點最大的那一條,然後更新ed。

1 #include 2

using

namespace

std;

3const

int maxn=50010;4

5struct

seg10

}s[maxn];

1112

intmain()29}

30 sort(s,s+n);

31if(s[0].x>0)35

int ans=0;36

double st=0,ed=0;37

for(int i=0;i)

43 i--;

44 ans++;

45 st=ed;46}

47if(ed>=l) break;48

}49if(ed>=l) printf("

%d\n

",ans);

50else puts("0"

);51

}52 }

view code

貪心法 區間完全覆蓋問題

問題 區間完全覆蓋問題 問題描述 給定乙個長度為m的區間,再給出n個區間的起點和終點,求最少使用多少個區間可以將整個區間完全覆蓋。方法 先將n個區間按照起點進行遞增排序。令s表示已經覆蓋到的區域。再剩下的區間中找出所有左端點小於等於當前已經覆蓋到的區域s並且右端點大於等於s的區間,取右端點最大的區間...

貪心 區間覆蓋問題

區間覆蓋問題 time limit 1000ms memory limit 65536kb submit statistic discuss problem description 設x1 x2 xn 是實直線上的n 個點。用固定長度的閉區間覆蓋這n 個點,至少需要多少個這樣的固定長度閉區間?對於給...

貪心法 區間覆蓋問題

區間覆蓋問題。數軸上有n個閉區間 a i,bi 選擇盡量少的區間覆蓋一條指定線段 s t 先進行預處理,將不包含 s t 的區間都去掉,然後再按左區間從小到大排序。如果最小區間的左區間大於 s 的話,則無解。選取包含 s的右區間最大的區間,該區間的右區間仍然小於下乙個區間的左區間,則無解。按照這樣的...