应该还是蛮简单的一题,但是因为模拟太差,一直没调出来.......

\(显而易见的应该按照左区间从小到大排序,相等按照右区间大到小排序\)。

\(那么第一个区间的l一定要是1,而且必拿(否则没有区间能包括1)\)

\(往后找一个R尽可能大的区间,前提是L被我们上一个选的区间的R+1包括\)

\(重复\)

细节还比较多,我还是太菜了啊

#include <bits/stdc++.h>
using namespace std;
struct p{
int l,r;
}b[25009],a[25009];int n,t,cnt;
bool com(p a,p b){
if(a.l==b.l) return a.r>b.r;
else return a.l<b.l;
}
void last(){
cout<<-1;
exit(0);
}
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++)
{
cin>>b[i].l>>b[i].r;
if(b[i].l<1) b[i].l=1;
}
sort(b+1,b+1+n,com);b[0].l=-1;
for(int i=1;i<=n;i++)
if(b[i].l!=b[i-1].l) a[++cnt]=b[i];//选取L相同时区间中的最优区间。不放到a数组里面也没事
if(a[1].l!=1) last();
int ans=1,tim,zan,i=1,num,flag;
while(1)
{
zan=a[i].r,tim=a[i].r,i++,flag=0;
if(tim>=t) break;
if(i>=cnt+1) last();
while(i<=cnt&&a[i].l<=tim+1)
{
if(zan<a[i].r)
flag=1,zan=a[i].r,num=i;
i++;
}
if(flag==0) last();
i=num,ans++;
}
cout<<ans;
}

然后下面是借鉴别人改进过的写法

#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
using namespace std;
struct p{
int l,r;
}b[25009],a[25009];int n,t,cnt;
bool com(p a,p b){
if(a.l==b.l) return a.r>b.r;
else return a.l<b.l;
}
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++)
{
cin>>b[i].l>>b[i].r;
if(b[i].l<1) b[i].l=1;
}
sort(b+1,b+1+n,com);b[0].l=-1;
for(int i=1;i<=n;i++)
if(b[i].l!=b[i-1].l) a[++cnt]=b[i];
int maxn=0,minn=0,top=1,ans=0;
while(maxn<t)
{
minn=maxn+1;//上一次覆盖的区间+1
for(int i=top;i<=cnt;i++)
{
if(a[i].l>minn)
{
top=i;
break;
}
else
maxn=max(maxn,a[i].r);
}
if(maxn==minn-1) break;//匹配失败
ans++;
}
if(maxn>=t) cout<<ans;
else cout<<-1;
}

最新文章

  1. 桥牌笔记索引,牌例全部摘自Bridge Master 2000
  2. HTML5之应用缓存---manifest---缓存使用----HTML5的manifest缓存
  3. Recaman&#39;s Sequence_递推
  4. 使用Ef时,对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性。
  5. SQL SERVER 自定义函数 split
  6. Lucene.Net 2.3.1开发介绍 —— 三、索引(二)
  7. BFC详解
  8. electron 写入注册表 实现开机自启动
  9. DevOps之二 Maven的安装与配置
  10. How to using Piwis Tester II code Porsche rear end electronics
  11. 百度地图开发者API学习笔记一(转载)
  12. Clock Pictures(kmp + Contest2075 - 湖南多校对抗赛(2015.04.26))
  13. easyui---editgrid
  14. Python 基础指令
  15. IDC:机房监控系统
  16. 「PKUSC2018」最大前缀和 LOJ#6433&amp;BZOJ5369
  17. django 2.0 中URL的include方法使用分析
  18. jquery阻止表单提交
  19. java String 提供的方法
  20. DOM的查找与操作

热门文章

  1. CocoaPods应用于iOS项目框架管理方案
  2. python超实用的30 个简短的代码片段(三)
  3. 当文件目录变得杂乱不堪怎么办,python帮你轻松搞定
  4. M - Help Hanzo LightOJ - 1197 (大区间素数筛法)
  5. F. Count Prime Pairs
  6. python 规范篇 如何合理使用 assert
  7. OAuth - 四种方式
  8. Linux下jdk的安装和环境变量的配置
  9. ansible的基础概念与部署(一)
  10. (c++ std) 查找 vector 中的元素