題解
【思路點撥】
首先按照區間的結束位置從小到大排序。然後從區間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個數字按順...