LOJ 10001 種樹(貪心)

2021-08-22 10:32:54 字數 676 閱讀 9916

題目鏈結

題目描述

某條街被劃為 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 的放在哪兒呢...