貪心 選擇不相交區間問題

2021-10-22 01:59:19 字數 985 閱讀 4913

1.p1803 凌亂的yyy / 線段覆蓋

題目描述

現在各大 oj 上有 n 個比賽,每個比賽的開始、結束的時間點是知道的。

yyy 認為,參加越多的比賽,noip 就能考的越好(假的)。

所以,他想知道他最多能參加幾個比賽。

由於 yyy 是蒟蒻,如果要參加乙個比賽必須善始善終,而且不能同時參加 2 個及以上的比賽。

輸入格式

第一行是乙個整數 n ,接下來 n 行每行是 2 個整數ai,bi (ai輸出格式

乙個整數最多參加的比賽數目。

輸入輸出樣例

輸入

3

0 22 4

1 3

輸出

2
思路分析

對每一步貪心求最優解,就要求每一步結束之後留給剩下的時間最多,所以對每一場比賽的結束時間進行排序,先結束的優先參加。(注意保證比賽的開始時間晚於上一場比賽的結束時間才是可以參加的)

**

#include

#include

#include

#include

#include

using namespace std;

struct form

match[

1000005];

intcmp

(form a,form b)

;int

main()

sort

(match,match+n,cmp)

;int ans=1;

int edt=match[0]

.ed;

for(i=

1;icout

}int

cmp(form a,form b)

(本篇作為學習筆記自用)

選擇不相交區間(貪心)

數軸上有n個區間 ai,bi 要求選擇盡量多個區間,使得這些區間兩兩沒有公共點。貪心策略 按照b1 b2 b3 的方式排序,然後從前向後遍歷,每當遇到可以加入集合的區間,就把它加入集合。集合代表解的集合 證明 我們對a1,a2 的關係分以下幾種情況考慮 1 a1 a2。此時區間2包含區間1。這種情況...

區間貪心之選擇不相交區間

區間相交問題 description 給定x軸上n個閉區間。去掉盡可能少的閉區間,使剩下的閉區間都不相交。給定n個閉區間,計算去掉的最少閉區間數。input 輸入第一行是正整數n n 100 表示閉區間數。接下來的n行中,每行有兩個整數 可以是負數 分別表示閉區間的兩個數端點。output 輸出去掉...

NYOJ 選擇不相交區間 貪心

那麼,對於該問題。就是給一系列的區間,求最多的區間,要求區間個數最多,這些區間不相交,需要注意的是這些區間都是閉區間。第一行乙個數n為區間個數 n 1000 接下來有n行,每行有兩個數a,b分別為區間的兩個端點,a,b在int範圍。eof結尾。輸出如樣例所示。2 1 10 10 11 31 10 1...