【贪心】【codevs】1214 线段覆盖
生活随笔
收集整理的這篇文章主要介紹了
【贪心】【codevs】1214 线段覆盖
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://codevs.cn/problem/1214/
我去這個(gè)題。。。wa的我都沒脾氣了。。。
我寫while(~scanf(“%d”, &n))竟然是不對(duì)的。。。
這個(gè)程序你妹多次輸入是不能結(jié)束的????!!!!!!
改成scanf輸入一次竟然就對(duì)了。。。。整個(gè)人都不好了。。。。
?
就是一個(gè)貪心,做法和《今年暑假不AC》是一樣的
按照結(jié)束時(shí)間(線段末尾排序),依次添加不重疊的線段即可
因?yàn)橐呀?jīng)先按照結(jié)束時(shí)間排序,結(jié)束時(shí)間相同的按照開始時(shí)間排序,這樣選擇最早結(jié)束的一定不會(huì)使結(jié)果更糟。例如 1 4 和 1 2, 2 4雖然1 ?2, 2 4看上去是比1 4度一組但是因?yàn)?已經(jīng)在之前被掃過了所以是不會(huì)出現(xiàn)這種情況的。。。
啊本來不用解釋的但是因?yàn)檩斎氲膯栴}所以生氣的再解釋一遍!= =?
?
#include<bits/stdc++.h> using namespace std;typedef struct line{int x, y;bool operator < (const line& l) const{if(y == l.y) return x < l.x;else return y < l.y;} }line;line l[1005];int main(){int n;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d%d", &l[i].x, &l[i].y);if(l[i].x > l[i].y) swap(l[i].x, l[i].y);}sort(l, l+n);int ans = 0;int tr = -1000;for(int i = 0; i < n; i++){if(l[i].x >= tr){tr = l[i].y;ans++;}}printf("%d\n", ans);return 0; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/miaowTracy/p/5302858.html
總結(jié)
以上是生活随笔為你收集整理的【贪心】【codevs】1214 线段覆盖的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奔驰glc多少钱啊?
- 下一篇: 原神雪中君在哪钓?