題意:在乙個矩形的花壇上,中間水平放了一排噴水裝置,澆灌半徑為r,問最少需要多少個裝置可以潤濕整個花壇。
將每個裝置轉換成一條線段,就變成了求最少的線段覆蓋整個區間。
將各線段左端點從小到大排序
設已覆蓋區間的右端點為ed
每次貪心選擇起點小於ed的線段中右端點最大的那一條,然後更新ed。
1 #include 2view codeusing
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 }
貪心法 區間完全覆蓋問題
問題 區間完全覆蓋問題 問題描述 給定乙個長度為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的右區間最大的區間,該區間的右區間仍然小於下乙個區間的左區間,則無解。按照這樣的...