[蓝桥杯][算法提高VIP]线段和点(排序+贪心)
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯][算法提高VIP]线段和点(排序+贪心)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
有n個點和m個區(qū)間,點和區(qū)間的端點全部是整數(shù),對于點a和區(qū)間[b,c],若a> =b且a< =c,稱點a滿足區(qū)間[b,c]。
求最小的點的子集,使得所有區(qū)間都被滿足。
數(shù)據(jù)規(guī)模和約定
1< =n,m< =10000
0< =點和區(qū)間的坐標< =50000
輸入
第一行兩個整數(shù)n m
以下n行 每行一個整數(shù),代表點的坐標
以下m行 每行兩個整數(shù),代表區(qū)間的范圍
輸出
輸出一行,最少的滿足所有區(qū)間的點數(shù),如無解輸出-1。
樣例輸入
5 5
2
6
3
8
7
2 5
3 4
3 3
2 7
6 9
樣例輸出
2
這兩天做了幾道線段和點的貪心問題,很傷。。
總結(jié)起來,這種問題大概率要排序,按照左端點右端點都有可能,根據(jù)具體題意而定。
這道題目,我們先按照左端點升序排序,如果左端點相同,則按照右端點降序排序。這樣我們就能每次將點推到一個更遠的位置。而這樣做的次數(shù),就是我們花費的點數(shù)。
代碼如下:
努力加油a啊,(o)/~
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]线段和点(排序+贪心)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#保留有效位数
- 下一篇: [蓝桥杯][算法提高VIP]分分钟的碎碎