Codeforce 22D Segments

原创 2018年04月15日 16:35:35

题意:

    存在n个区间,我们至少能用多少个点将这几个区间固定住。

解析:

    我们可以对所有的线段进行一次排序:

    bool operator<(const Node &a)const
    {
        if(a.l==l)return r>a.r;
        return l<a.l;

    }

    我们就需要不断往数组中推入新的点。并更新。

1.如果数组顶的结点可以固定这个线段那么我只直接去询问下一个就可以了。

2.如果当前线段的右端点小于数组顶的元素我们可以将该元素缩小。(因为我们是按照l进行排序的所以我们缩小后的点之前满足的一样满足)

3.如果当前线段的左端点大于数组顶的元素,我们就往数组中推入一个元素。

#include<bits/stdc++.h>
using namespace std;
struct Node
{
    int l,r;
    bool operator<(const Node &a)const
    {
        if(a.l==l)return r>a.r;
        return l<a.l;
    }
} a[1005];
vector<int>v;
int main()
{
    int n;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>a[i].l>>a[i].r;
        if(a[i].r<a[i].l)swap(a[i].l,a[i].r);
    }
    sort(a,a+n);
    int T=0;
    v.push_back(a[0].r);
    for(int i=1;i<n;i++){
        if(a[i].r>=v[v.size()-1]&&a[i].l<=v[v.size()-1])continue;
        else if(a[i].r<v[v.size()-1])v[v.size()-1]=a[i].r;
        else v.push_back(a[i].r);
    }
    printf("%d\n",v.size());
    for(int i=0;i<v.size();i++)cout<<v[i]<<" ";
    cout<<endl;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lj130lj/article/details/79950348

Codeforeces - 903E. Bipartite Segments - dfs、二分图

E. Bipartite Segments 分类: data structures dfs and similar 题意: 给你一个无向图,n(1≤n≤3×105)n(1\leq n\leq 3\...
  • dragon60066
  • dragon60066
  • 2017-12-20 16:19:59
  • 170

codeforce 895B XK Segments (结论)

the link : http://codeforces.com/contest/895/problem/B this is a clever question ,witch tell you so...
  • lingzidong
  • lingzidong
  • 2017-12-05 21:54:22
  • 29

codeforces 652D Nested Segments

题意:    给出n个线段 ,问 第 i 条线段 覆盖了多少条线段,(不包括其本身),且每条线段的终点不会相同,    思路: 将右端点离散,将左端点从小到大排序,满足 Li #includ...
  • Theflowerofac
  • Theflowerofac
  • 2016-03-28 15:44:02
  • 326

Codeforces 652D Nested Segments 【树状数组 + 离散化】

题目链接:Codeforces 652D Nested Segments D. Nested Segments time limit per test2 seconds memory limit...
  • chenzhenyu123456
  • chenzhenyu123456
  • 2016-03-29 12:10:56
  • 460

Codeforces-895B XK Segments

/** 题意:输入n,x,k; 和一个 n 长度的 序列 , 一个二元组的定义如下(i,j) 满足 ai...
  • m0_38013346
  • m0_38013346
  • 2017-11-27 09:56:35
  • 477

Codeforces899E Segments Removal

标签:STL,数据结构题目题目传送门Vasya has an array of integers of length n.Vasya performs the following operations...
  • qwerty1125
  • qwerty1125
  • 2017-12-18 10:52:22
  • 327

codeforce 899E(线段树/链表+优先队列)

这题做完之后整场比赛就AK了(虽然是赛后),感觉赛后得把题全做了比赛才会更有意义撒。。 找最大重复序列并依次删除。。在汪聚聚的提醒下才发现其实用线段树就能实现啊。。orz 维护的东西有点多,实现起来的...
  • qkoqhh
  • qkoqhh
  • 2017-12-21 23:48:20
  • 63

Codeforces Round #452 (Div. 2) - E. Segments Removal(链表+优先队列)

E. Segments Removal time limit per test 2 seconds memory limit per test 256 megabytes ...
  • Mr_Treeeee
  • Mr_Treeeee
  • 2017-12-21 23:05:16
  • 146

CodeForces 22D Segments 排序水题

题目链接:点击打开链接 右端点升序,取右端点 暴力删边 #include #include #include #include #include #include #include ...
  • qq574857122
  • qq574857122
  • 2014-07-01 12:44:11
  • 709

android adt,sdk,google map api…

Linux修改hosts文件,末尾添加如下其中一行即可:  74.125.136.93   dl-ssl.google.com  74.125.128.190  dl-ssl.google.com...
  • ywfxll
  • ywfxll
  • 2015-03-06 11:08:57
  • 729
收藏助手
不良信息举报
您举报文章:Codeforce 22D Segments
举报原因:
原因补充:

(最多只允许输入30个字)