CODEVS 1214

1214 线段覆盖

题意:中文题

思路:贪心,先按l排序后按r排序,每次标记当前剩下线段的最右端,因为l是从小到达有序的,所以不需要考虑左端点,只需要考虑右边尽量往左端点取就是了

AC代码:

#include "iostream"
#include "string.h"
#include "stack"
#include "queue"
#include "string"
#include "vector"
#include "set"
#include "map"
#include "algorithm"
#include "stdio.h"
#include "math.h"
#define ll long long
#define bug(x) cout<<x<<" "<<"UUUUU"<<endl;
#define mem(a) memset(a,0,sizeof(a))
#define mp(x,y) make_pair(x,y)
#define pb(x) push_back(x)
using namespace std;
const long long INF = 1e18+1LL;
const int inf = 1e9+1e8;
const int N=1e5+100;
const ll mod=1e9+7;

struct Node{
    int l, r;
    bool friend operator< ( Node a, Node b){
        if(a.l==b.l) return a.r<b.r;
        return a.l<b.l;
    }
};
Node arr[105];
int n,ans=-1;
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>n;
    for(int i=1; i<=n; ++i){
        int x,y;
        cin>>x>>y;
        arr[i].l=min(x,y);
        arr[i].r=max(x,y);
    }
    sort(arr+1,arr+1+n);
    int p=inf;
    for(int i=1; i<=n; ++i){
        if(arr[i].r>=p){
            if(arr[i].l<p){
                ans++;
            }
            else p=arr[i].r;
        }
        else{
            ans++;
            p=arr[i].r;
        }
    }
    cout<<n-ans<<"\n";
    return 0;
}
时间: 2024-10-12 13:46:08

CODEVS 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)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点.所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分). 输入描

2017.12.17~2017.12.24

最近这两个星期的做题计划 (打'.'的是可做可不做,打'!'的是必做,打'?'的是选做) Openjudge  2.2 8758 .2的幂次方表示                          AC1696 !逆波兰表达式                            AC7592 !求最大公约数问题                     AC1750 !全排列666   !放苹果(递归) Openjudge  1.11 1       !查找最接近的元素4       .网线主管

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行,每行有二

【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/ 我去这个题...wa的我都没脾气了... 我写while(~scanf(“%d”, &n))竟然是不对的... 这个程序你妹多次输入是不能结束的????!!!!!! 改成scanf输入一次竟然就对了....整个人都不好了.... 就是一个贪心,做法和<今年暑假不AC>是一样的 按照结束时间(线段末尾排序),依次添加不重叠的线段即可 因为已经先按照结束时间排序,结束时间相同的按照开始时间排序,这样选择最早结束的一定不会使结果更

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)的整数.有些线段之间会相互交叠或覆盖.请你编写一个程序,从给出的线段中去掉尽量少

[ CodeVS冲杯之路 ] P2492

不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直接树状数组(以下简称BIT)维护,修改操作就一个个暴力开方搞,再用差值单点更新BIT 不过这样会TLE,要加一点优化对不对,正如开头所说的路径压缩链表 路径压缩链表其实就是个并查集,在普通的链表里,删去两个连续的节点后会是下面这种情况,如删去2,3 当访问 2 的时候,会跳到3,但 3 已经删除了,

light oj 1214 - Large Division

1214 - Large Division   PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 32 MB Given two integers, a and b, you should check whether a is divisible by b or not. We know that an integer a is divisible by an integer b if and only if