链接:https://ac.nowcoder.com/acm/contest/1085/A
来源:牛客网

应肖老师要求前来更新水一水

题目描述

小 sun 非常喜欢放假,尤其是那种连在一起的长假,在放假的时候小 sun 会感到快乐,快乐值等于连着放假的天数,现在小 sun 把他的安排表告诉你,希望你告诉他在他的安排表中, 他的最大快乐值。 
当某天没有安排的时候就是放假。

输入描述:

第一行两个数n,m,代表总共有n天,m个安排。

接下来有m行,每行是一个安排l,r,代表从第l天到第r天,小sun有安排了。

安排可能会重复。

输出描述:

输出一行,在这个安排表中,小sun最大的快乐值。
示例1

输入

复制

5 1
2 3

输出

复制

备注:

数据范围:
n≤1e9,m≤1e5n\leq 1e9, m\leq 1e5n≤1e9,m≤1e5
1≤l,r≤n1 \leq l,r\leq n1≤l,r≤n
题意:

 

在一条长为n的数轴上,用m个区间覆盖这条数轴,问最长未被覆盖的数轴长度。

思路:

线段树的染色法肯定是暴毙的,由此想到暴力动动小脑瓜。

首先我们对m个区间的左端点进行排序,然后惊讶地发现只要从左到右更新最远的右端点并对未被覆盖的区间长度进行更新即可。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std;
const int maxn = 1e5+; struct node{
int l,r;
}a[maxn]; bool cmp(node a,node b)
{
/*if(a.l==b.l)
return a.r>b.r;
*/
return a.l<b.l;
} int main()
{
int ans=;
int lf=,rt=;
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d %d",&a[i].l,&a[i].r);
} sort(a+,a+m+,cmp);
/*for(int i=1;i<=m;i++)
printf("l:%d r:%d\n",a[i].l,a[i].r);*/
ans=(a[].l-);
//printf("a:%d\n",ans);
rt=a[].r;
for(int i=;i<=m;i++)
{
if(a[i].l>rt)
{
ans=max(ans,a[i].l-rt);
rt=a[i].r;
}
else
{
if(a[i].r>rt)
{
rt=a[i].r;
}
continue;
}
}
ans=max(ans,n-rt);
printf("%d\n",ans);
return ;
}

方法二:

肖老师说的pair

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <set>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
const int maxn = 1e5+; set< pair <int,int> > s; int main()
{
int ans=;
int rt=;
int n,m;
scanf("%d%d",&n,&m);
int l,r;
for(int i=;i<=m;i++)
{
scanf("%d %d",&l,&r);
s.emplace(l,r);
}
for(auto i : s)
{
if(i.first>rt)
{
ans=max(ans,i.first-rt);
rt=i.second;
}
else
{
if(i.second>rt)
{
rt=i.second;
}
continue;
}
}
ans=max(ans,n-rt);
printf("%d\n",ans); return ;
}

本质上是一样的东西,set+emplace跑的并没有更快?

最新文章

  1. Java开发规范摘录
  2. StartUML反向(逆向)Java工程通过代码生成类图
  3. STC12C5A60S2 双串口通信
  4. 运行impala tpch
  5. javascript date picker
  6. Java魔法堂:枚举类型详解
  7. 1334: [Baltic2008]Elect
  8. SecureCRT相关
  9. 10_Jaxws使用自定义pojo发布服务
  10. kafka教程
  11. 响应式Web图形篇 —— icon fonts 的探析及应用
  12. python安装和环境变量的配置
  13. 使用FMDB多线程访问数据库,及database is locked的问题
  14. git-------基础(一)
  15. 使用flask_socketio实现客户端间即时通信
  16. js 执行上下文理解
  17. php程序猿面试分享
  18. Wannafly挑战赛27-A/B
  19. Java运算符号,对象赋值,别名
  20. MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)

热门文章

  1. localStorage 存储
  2. Tomcat 核心配置
  3. vim配置markdown预览
  4. (好题)POJ3057
  5. Java软件工程师技能图谱
  6. C#的冒泡排序
  7. 后端跨域的N种方法
  8. 到2029年MRAM收入将增长170倍
  9. junit 常用注解 + junit 断言详解
  10. 简单的OO ALV显示ALV及下载