codeVS 1214 線段覆蓋

2021-07-26 18:49:46 字數 705 閱讀 5383

題目描述 description

給定x軸上的n(0輸入描述 input description

輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。

輸出描述 output description

輸出第一行是乙個整數表示最多剩下的線段數。

樣例輸入 sample input 3

6  3

1  3

2  5

樣例輸出 sample output 2

資料範圍及提示 data size & hint 0

解題思路

貪心策略。

先按右端點將所有線段排序,優先安排右端點小的線段在前面以盡量給後面線段節省位置;

再遍歷所有線段,無交叉則加上,記錄線段累加情況並更新已填充區右邊界。

ac**如下:

#include #include using namespace std;

struct sega[105];

//右端點小的優先排在前面

bool cmp( seg a, seg b )

int main()

}sort( a, a+n, cmp );

int rr = a[0].r, num = 1;

for( int i = 1; i < n; ++i )

}cout<

codevs1214 線段覆蓋

題目描述 description 給定x軸上的n 0 輸入描述 input description 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 output description 輸出第一行是乙個整數表示最多剩下的線段數。樣例輸入 sam...

Codevs 1214 線段覆蓋

時間限制 1 s 空間限制 128000 kb 題目等級 gold 給定x軸上的n 0 輸入描述 input description 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 output description 輸出第一行是乙個整數表示...

codevs 1214 線段覆蓋(貪心)

題目 codevs1214 思路 將輸入的區間按照左小右大交換,然後按照左區間從小到大排序,左區間一樣的,比較右區間,也按從小到大 然後從第乙個區間開始刪除後面的區間,如果後面的區間左區間大於前面的右區間,在比較前面的右區間和後面的右區間,如果前面的右區間大則刪除前面的那個區間,否則刪除後面的區間 ...