程式設計思維與實踐 Week3 作業 B區間選點

2021-10-03 14:25:41 字數 823 閱讀 1679

題意:

數軸上有n個閉區間,在數軸上選取盡量少的點,使得每個區間上都有乙個點,其中乙個點可以覆蓋多個區間。

思路:將各個點用結構體記錄下來,分別記錄下左右邊界。不妨設左端點為a,右端點為b。對這些點進行排序,然後將區間按b 從小到大排序(b 相同時a 從大到小排序),然後從前往後進行選點,點為選擇前乙個區間的右端點,然後再不斷取出後面的區間,看看前面選擇的點是否在區間內,若小於該區間的左端點,即不在區間內,即選取該區間的右端點作為下乙個點,迴圈下去,直到區間選完。

總結:主要是點的選取問題,即先對區間進行排序處理,然後從最左端開始,依次選點。

**:

#include

#include

using

namespace std;

struct p};

intmain()

;for

(int i=

0; i

)sort

(p,p+n)

;//進行排序

int count=0;

//記錄點數

int m=p[0]

.b;//當前點的位置

count++

;for

(int i=

1; i

cout<

return0;

}

原題:

程式設計思維與實踐 Week3 作業

b 區間選點 貪心 c 區間覆蓋問題 貪心 給出n個正數,從其中選出k個數,使其總和為s,問 有多少種選數方案?input 第一行是正數t t 100 表示測試的組數。每一組都輸入兩行,第一行是三個整數n,k,s,第二行是n個正整數。output 每一組輸出結果佔一行,為方案的數目。sample i...

程式設計思維與實踐 Week3 作業

給定n個正數,從中選出k個數,令其和為s,求選數的方案數。對於每乙個數選擇與不選擇都進行dfs 邊界條件 選中k個數且和為s 選中數的個數大於k 選中數的和大於s 要選的數越界了 include using namespace std int ans 0 int a 2000 int n,k,s v...

程式設計思維與實踐 Week3 作業 B 區間選點

b 區間選點 題目描述 數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 input 第一行1個整數n n 100 第2 n 1行,每行兩個整數a,b a,b 100 output 乙個整數,代表選點的數目 sample input 1...