洛谷 P1250 種樹 貪心

2021-09-25 09:21:11 字數 951 閱讀 6509

一條街的一邊有幾座房子。因為環保原因居民想要在路邊種些樹。路邊的地區被分割成塊,並被編號成1..n。每個部分為乙個單位尺寸大小並最多可種一棵樹。每個居民想在門前種些樹並指定了三個號碼b,e,t。這三個數表示該居民想在b和e之間最少種t棵樹。當然,b≤e,居民必須記住在指定區不能種多於區域地塊數的樹,所以t≤e-b+l。居民們想種樹的各自區域可以交叉。你的任務是求出能滿足所有要求的最少的樹的數量。

寫乙個程式完成以下工作:

輸入格式:

第一行包含資料n,區域的個數(0第二行包含h,房子的數目(0下面的h行描述居民們的需要:b e t,0輸出格式:

輸出檔案只有一行寫有樹的數目

輸入樣例#1

9

41 4 2

4 6 2

8 9 2

3 5 2

輸出樣例#1

5
種樹想要種的少,就要一棵樹給多個區間進行使用,意思就是在重疊區間多種樹,而重疊位置一般在區間尾部。先按區間結束位置排序,之後依次處理每個區間。

#include #include #include using namespace std;

int n,m,s;

typedef struct

lxydl;

lxydl a[100001];

bool vis[100001];

inline bool cmp(lxydl a,lxydl b)

sort(a+1,a+m+1,cmp);

for(i=1,k=0;i<=m;i++)//處理每個區間

if(k=a[i].b;j--)//在結尾處加是最優的 }}

} k=0;

} cout

}

洛谷P1250種樹(貪心)

一條街的一邊有幾座房子。因為環保原因居民想要在路邊種些樹。路邊的地區被分割成塊,並被編號成1.n。每個部分為乙個單位尺寸大小並最多可種一棵樹。每個居民想在門前種些樹並指定了三個號碼b,e,t。這三個數表示該居民想在b和e之間最少種t棵樹。當然,b e,居民必須記住在指定區不能種多於區域地塊數的樹,所...

spfa 貪心 洛谷P1250 種樹

貪心這個很簡單吧 就是按右端排序 當前區間不滿則在右端種樹 這樣可以保證重複最多 spfa就很有意思了 其實題目化開來 查分約束系統,變數dis k 是前k家種樹的字首和,滿足三個條件 1.s e s b 1 t 居民要求 2.s k s k 1 0 不能種負樹 3.s k s k 1 1 一塊地種...

20190709種樹(洛谷P1250)

題目描述 一條街道的一邊有幾座房子,因為環保原因居民想要在路邊種些樹,路邊的居民被分割成 n 塊,並被編號為 1 n。每塊大小為乙個單位尺寸並最多可種一棵樹。每個居民想在門前種些樹並指定了三個數b,e,t。這三個數分別表示該居民想在b和e之間最少種t棵樹,當然b e,t e b 1,允許居民想種樹的...