【贪心】1214 线段覆盖

http://codevs.cn/problem/1214/

我去这个题。。。wa的我都没脾气了。。。

我写while(~scanf(“%d”, &n))竟然是不对的。。。

这个程序你妹多次输入是不能结束的????!!!!!!

改成scanf输入一次竟然就对了。。。。整个人都不好了。。。。

就是一个贪心,做法和《今年暑假不AC》是一样的

按照结束时间(线段末尾排序),依次添加不重叠的线段即可

因为已经先按照结束时间排序,结束时间相同的按照开始时间排序,这样选择最早结束的一定不会使结果更糟。例如 1 4 和 1 2, 2 4虽然1  2, 2 4看上去是比1 4度一组但是因为2已经在之前被扫过了所以是不会出现这种情况的。。。

啊本来不用解释的但是因为输入的问题所以生气的再解释一遍!= =

#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;
}
时间: 2024-10-17 19:13:42

【贪心】1214 线段覆盖的相关文章

codevs 1214 线段覆盖

1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入描

codevs 1214线段覆盖

1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入描

1214 线段覆盖 水

1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入描

【贪心】线段覆盖

[贪心]线段覆盖 时间限制: 1 Sec  内存限制: 128 MB 题目描述 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入 输入第一行是一个整数N.接下来有N行,每行有二个空格隔开

【codevs】【贪心】1214线段覆盖

完了完了碰到线段就不会做了QAQ,看看大神的博客http://m.blog.csdn.net/blog/maverick1990/17262495 代码这儿: #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; const int maxn=110; int n,ans=1; struct line { int l,r;

1214 线段覆盖——http://codevs.cn/problem/1214/

第一部分:题目 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入描述 Input Description 输入第一行是一个整数N.接下来有N行,每行有二

1214 线段覆盖wiki oi

题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入描述 Input Description 输入第一行是一个整数N.接下来有N行,每行有二个空格隔开的整数

1214 线段覆盖

题目链接http://codevs.cn/problem/1214/ 相似题目https://www.cnblogs.com/huashanqingzhu/p/6728674.html 时间限制: 1 s     空间限制: 128000 KB 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少

【贪心】线段覆盖(题解)

思路稍微变一变 切记钻牛角尖 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入描述 Input Description 输入第一行是一个整数N.接下来有