題意:x軸上公路從0到l,x軸上下有一些點給出座標代表村莊,問在公路上最少建幾個出口才能使每個村莊到出口的距離不超過d。
以村莊為圓心,半徑為 d 畫圓,與公路相交,得到乙個乙個區間,這麼選點呢?
按照區間右端點排序,第乙個點,選擇第一條線段的右端點,當前位置就在這裡,已經(很)靠後了,拿這個點去檢視以後的線段,看是不是符合。
1 #include 2 #include 3 #include 4view code5using
namespace
std;67
const
int maxn = 10005;8
9struct
point
10 points[maxn];
1314
struct
line
15 lines[maxn];
1819
bool
cmp(line a,line b)
2023
24int
main()
2538
39 sort(lines,lines+n,cmp);
40int ans = 1;41
double cur = lines[0
].y;
42for(int i=1; i)
4351}52
53 printf("
%d\n
",ans);54}
55return0;
56 }
1 區間選點 區間問題
區間問題一般都需要對區間進行排序,對左端點排序,或對右端點排序,或雙關鍵字排序 然後需要 證明這樣的選法選出來的點數一定是符合答案的,且是選點最少的 首先按照這個方法來選的話,每乙個區間上一定選了乙個點,所以這種選法是一種合法的方案 然後這道題的最優解是指所有合法方案中的選點最少的,所以 所以ans...
905 區間選點(貪心)
題目傳送門 題解思路參考大佬 給定 n 個閉區間 ai bi a i,b i ai b i 請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。輸出選擇的點的最小數量。位於區間端點上的點也算作區間內。輸入格式 第一行包含整數 n 表示區間數。接下來 n 行,每行包含兩個整數ai,bi a...
hdu 4883 區間選點
昨天比賽的時候沒有做出來,本來是想用貪心的,但是貪了好久都沒有招,今天在網上搜了解題報告 好像說這是一類區間選點問題 有乙個好的做法 1 首先把題目中的時間全轉化為分鐘,那麼區間就在0 1440中間 2 對於n組人,有乙個si 和乙個ei,那麼開個陣列,cnt si d cnt ei d 3 也就是...