題目鏈結
題目描述
某條街被劃為 n 條路段,這 n 條路段依次編號為 1…n。每個路段最多可以種一棵樹。現在居民們給出了 h 組建議,每組建議包含三個整數 b,e,t 表示居民希望在路段 b 到 e之間至少要種 t 棵樹。這些建議所給路段的區間可以交叉。請問:如果要滿足所有居民的建議,至少要種多少棵樹。
輸入格式
第一行為 n,表示路段數。
第二行為 h,表示建議數。
下面 h 行描述一條建議:b,e,t 用乙個空格分隔。
輸出格式
輸出只有乙個數,為滿足所有居民的建議,所需要種樹的最少數量。
樣例樣例輸入
9
41 4 2
4 6 2
8 9 2
3 5 2
樣例輸出
5
資料範圍與提示
30%的資料滿足 0100%的資料滿足 0區間問題。按右端點的公升序排序,將樹盡可能的往右端點種。
ac**:
#include#include#include#include#include#includeusing namespace std;
struct node
cout<}
10001 一本通 1 1 例 2 種樹
題目題目題目 題目描述 某條街被劃為 n條路段,這 n 條路段依次編號為 1 n。每個路段最多可以種一棵樹。現在居民們給出了 hhh 組建議,每組建議包含三個整數 b,e,t,表示居民希望在路段 b 到 e 之間至少要種 t 棵樹。這些建議所給路段的區間可以交叉。請問 如果要滿足所有居民的建議,至少...
bzoj 2151 種樹(貪心)
題目 分析 原型是bzoj 1150 ctsc 2007 首先dp無法下手,想到貪心。想到貪心的第一感覺就是從大的開始取,但明顯有反例,最煩的就是乙個大的旁邊旁邊兩個也很大,導致如果取了那兩個最後結果更大。解決的辦法就是每次取最大的同時,把它同旁邊兩個點合併成乙個點,權值取 左 右 中間,然後後面繼...
BZOJ 2151 種樹(鍊錶 貪心)
有一種顯然錯誤的做法 每次從堆裡取最大的,更新鍊錶 比如 19,20,19 這樣的話會先選20。但是很顯然,選兩個19帶來的貢獻可能是更好的 這時我們就要想一種能做到 反悔 的方法 其實只需要做一點點修改,每次再push乙個 19 19 20 進去,一樣是對的 那這個 19 19 20 的放在哪兒呢...