1423 例題2 種樹

2022-04-12 03:58:00 字數 641 閱讀 4363

題解

【思路點撥】

首先按照區間的結束位置從小到大排序。然後從區間1到區間n進行選擇:對於當前區間,若集合中的數不能覆蓋它,則將區間末尾的數加入集合

貪心策略:取最後乙個。

種樹要種得少,就要使一棵樹給多個區間使用。這樣,盡量在重疊區間種樹即可,而重疊位置一定是在區間尾部。

處理問題時,先按所有區間的結束位置排序,之後依次處理每個區間,先在第乙個區間尾部種滿足要求的樹,對下乙個區間,看差多少棵就在該區間尾部種多少

**

#include#include

#include

#include

#include

#include

using

namespace

std;

int n,m,ans=0,t,k=0

;bool vis[50000

];struct

a[5005

];bool

intmain()}}

}printf("%d

",ans);

return0;

}

一本通 1 1 例 2 種樹

題目傳送門 這題的題目問的是要滿足所有居民的建議,至少要種多少棵樹。對於這種題目,我們首先想到的應該是貪心策略。貪心策略 首先按右端點從小到大排序,因為要求樹最少,所以要盡量放在右端點。然後定義乙個bool陣列判斷該點是否種過樹即可。從右端點開始種,可以讓更多的樹照顧到更右側的端點,這樣就能使種的數...

10001 一本通 1 1 例 2 種樹

題目題目題目 題目描述 某條街被劃為 n條路段,這 n 條路段依次編號為 1 n。每個路段最多可以種一棵樹。現在居民們給出了 hhh 組建議,每組建議包含三個整數 b,e,t,表示居民希望在路段 b 到 e 之間至少要種 t 棵樹。這些建議所給路段的區間可以交叉。請問 如果要滿足所有居民的建議,至少...

1449 例題2 魔板

題解這道題是一道非常典型的bfs題目,bfs所面臨的最大問題是判斷重複。顯然,如果每次判 斷重複都掃瞄一次佇列,搜尋的效率將非常低,會提高乙個指數級,所以一般寬度搜尋的判斷重複 都是運用陣列來實現的,那麼陣列下標就需要用乙個hash函式來計算出來。本題hash函式的設計 我們很容易想到將8個數字按順...