zoukankan      html  css  js  c++  java
  • code forces1249D Too Many Segments

    大佬连接::https://blog.csdn.net/weixin_43847416/article/details/102749985

    题意::删除最少数量的区段使每个整数点的覆盖次数不大于K

    思路::

    以区间左端点为头,右端点由小到大排序,如果端点相同,按标号存入。

    从头开始遍历每个点,判断每个点上覆盖次数,大于k时删除最长的那个区间。

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 const int maxn=2e5+5;
     5 struct node{
     6     int r,index;
     7     node(){}
     8     node (int  rr,int ii ):r(rr),index(ii){}
     9     bool operator < (const node &rh)const{
    10         if(r==rh.r){return index<rh.index;}
    11         else{return r<rh.r;}
    12     }
    13 };
    14 vector<int>ans;
    15 vector<node>p[maxn];
    16 
    17 int main()
    18 {
    19     int n,k,a,b;
    20     scanf("%d%d",&n,&k);
    21     for(int i=1;i<=n;i++){
    22         scanf("%d%d",&a,&b);
    23         p[a].push_back(node(b,i));
    24     }
    25     set<node>s;
    26     for(int i=1;i<maxn;i++){
    27         while(s.size()&&(*s.begin()).r<i){s.erase(*s.begin());}
    28         for(int j=0;j<p[i].size();j++){
    29             s.insert(p[i][j]);
    30         }
    31         while(s.size()>k){
    32             ans.push_back((*s.rbegin()).index);
    33             s.erase(*s.rbegin());
    34         }
    35     }
    36     int len=ans.size();
    37     printf("%d
    ",len);
    38     for(int i=0;i<len;i++){
    39         printf("%d ",ans[i]);
    40     }
    41     return 0;
    42 }
    纵使单枪匹马,也要勇闯天涯
  • 相关阅读:
    C++类继承内存布局(二)
    C++类继承内存布局(一)
    排序算法
    python 文件路径问题
    python map对象
    python reduce() 函数
    python eval 用法
    PyCharm引入自定义类报错
    Python中的lambda的简单介绍
    python time模块和datetime模块
  • 原文地址:https://www.cnblogs.com/sj-gank/p/11816274.html
Copyright © 2011-2022 走看看