貪心演算法訓練 五 種樹 區間選點問題

2022-07-31 20:09:11 字數 958 閱讀 1217

1. 問題描述

一條街道的一邊有幾座房子,因為環保原因居民想要在路邊種些樹,路邊的地區被分割成 n 塊,並被編號為 1…n,每塊大小為乙個單位尺寸並最多可以種一棵樹,每個居民想在門前種些樹並指定了三個數 b,e,t 這三個數分別表示該居民想在 b 和 e 之間最少種 t 棵樹,當然,b<=e,t<=e-b+1 ,允許居民想種樹的子區域可以交叉。出於資金緊缺的原因,環保部門請你求出能滿足所有居民的種樹要求時所需樹的最少數量

2.輸入格式

第一行為 n,表示區域的個數

第二行為 h,表示房子的數目

下面 h 行描述居民的需要:b,e,t (0 < b <= e <= 30000,t <= e-b+1)分別用空格分開

3. 輸出格式

輸出乙個數,為滿足所有居民的要求,所需要種樹的最少數量

4. 樣例輸入

941

4246

2892

352

5, 樣例輸出

5

6. 思路分析

按區間的末尾進行排序,從頭開始,將區間的末尾加入佇列,判斷它是否存在於下個區間,如果存在,繼續判斷下乙個區間,如果不存在,取下乙個區間的末尾,繼續判斷,得到可以存在於公共位置的區間個數,就是可以節約的樹的數量

7. **

#include #include 

#include

using

namespace

std;

void insertion_sort(int a,int arr,int

len);

intmain()

cout

return0;

}void insertion_sort(int a,int arr,int

len)

arr[j+1]=key;

a[j+1] =key1;

}}

區間選點(貪心演算法)

數軸上有 n 個閉區間 a ia i ai b ib i bi 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 輸入要求 第一行輸入整數n,第2 n 1行,每行輸入兩個整數,表示a ia i ai 和 b ib i bi 輸出要求 輸出選點的數目 sample input ...

B 區間選點 貪心演算法

數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點,輸出選點的數目。樣例輸入輸出 定義乙個結構體表示區間,讀入資料後,進行多關鍵字排序 第一為右區間小的在前,第二為左區間大的在前 從開始選擇第乙個區間的右端點point,向後迴圈,若point在該區間內,則繼續迴圈,直...

貪心演算法 區間問題

區間選單個點 問題描述 數軸上有n個閉區間 ai,bi 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 輸入 第1行 乙個整數n 接下來n行,每行2個整數ai,bi 輸出 乙個整數,表示滿足條件的最少點數。樣例輸入 5 4 62 3 1 46 8 5 7 樣例輸出 2策略分...