poj 3485 區間選點

2022-04-01 07:18:14 字數 787 閱讀 2747

題意:x軸上公路從0到l,x軸上下有一些點給出座標代表村莊,問在公路上最少建幾個出口才能使每個村莊到出口的距離不超過d。

以村莊為圓心,半徑為 d 畫圓,與公路相交,得到乙個乙個區間,這麼選點呢?

按照區間右端點排序,第乙個點,選擇第一條線段的右端點,當前位置就在這裡,已經(很)靠後了,拿這個點去檢視以後的線段,看是不是符合。

1 #include 2 #include 3 #include 4

5using

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 }

view code

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 也就是...