论Div3出这样巨水的送分题竟然还没多少人AC(虽说当时我也没A...其实我A了D...逃)

这个题其实一点都不麻烦,排序都可以免掉(如果用\(priority \_ queue\)的话)

先考虑不删除区间的情况,那么答案应该由所有区间中左端点坐标最大的区间和右端点坐标最小的区间决定(手动模拟一下加入新的区间造成的更严格的约束即得),所以想在删掉一个区间后使得剩余的区间的交尽可能大只需要考虑删去左端点最大的区间和右端点最小的区间即可

一定有人会问如果左端点最大且坐标相同的区间不是一个的时候删哪一个,其实完全不需要考虑(如果有不止一个那你删哪个都不能放宽左端点约束),右端点同理,所以我们可以直接把所有的左端点和右端点分别放入优先队列,最后讨论删除区间的情况取\(max\)即可

如果左端点最大的区间和右端点最小的区间是同一个区间,那就铁定删掉这个区间就对了(谁让它是最严格的约束呢\(qwq\))

下面按照惯例放AC代码\(\downarrow\downarrow\downarrow\)

#include<cstdio>//CF1029C
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue> using namespace std; int n,ansl,ansr; struct lborder{
int x,id;
bool operator<(const lborder&rhs)const{
return x<rhs.x;
}
}; struct rborder{
int x,id;
bool operator<(const rborder&rhs)const{
return x>rhs.x;
}
}; lborder lb;rborder rb; priority_queue<lborder>ql;priority_queue<rborder>qr; int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&lb.x,&rb.x);
lb.id=i;
rb.id=i;
ql.push(lb);
qr.push(rb);
}
if(ql.top().id==qr.top().id){
ql.pop();
qr.pop();
printf("%d\n",max(0,qr.top().x-ql.top().x));
return 0;
}
ansl=ql.top().x;
ansr=qr.top().x;
ql.pop();
qr.pop();
int ans=max(ansr-ql.top().x,qr.top().x-ansl);
printf("%d\n",max(ans,0));
return 0;
}

Codeforces | CF1029C 【Maximal Intersection】的更多相关文章

  1. Codeforces 176B【计数DP】

    题意: 给你两个串s1,s2和一个K, 有一种操作是在一个串切开然后交换位置, 问s1有多少种方法经过K次这样的操作变成s2: 思路: (从来没接触过计数DP...还是太菜...参考了[大牛blog] ...

  2. CodeForces 604D 【离散数学 置换群】

    题意: 给你一个方程,方程太变态不打,给你一个p一个k,p保证是大于等于3的质数,k保证在0~p-1之间的整数.要求对应函数的定义域在0~p-1值域为0~p-1的子集,求这样的函数有多少个... 分析 ...

  3. CodeForces 602D 【单调队列】【简单数学】

    题意: 给你n个数,m次询问,每次询问给l和r代表l和r中间所有子区间中特征值的和. 特征值的定义是在这个区间中找i和j使得|tmp[i]-tmp[j]|/|j-i|最大. 思路: 首先是特征值的定义 ...

  4. CodeForces 617C【序枚举】

    题意: 有两个点喷水,有很多个点有花,给出坐标. 求使得每个花都可以被喷到,两个喷水的半径的平方的和最小是多少. 思路: 枚举其中一个喷水的最大半径. 坑: 这题我贪心的思路有很大问题.一开始也是想这 ...

  5. CodeForces 602E【概率DP】【树状数组优化】

    题意:有n个人进行m次比赛,每次比赛有一个排名,最后的排名是把所有排名都加起来然后找到比自己的分数绝对小的人数加一就是最终排名. 给了其中一个人的所有比赛的名次.求这个人最终排名的期望. 思路: 渣渣 ...

  6. Codeforces | CF1029F 【Multicolored Markers】

    这道题其实难度应该小于紫题...除了一点小特判以外没什么难度...\(\leq50\)行代码即可\(AC\)此题 题目大意:给定两个数\(a,b(1\leq a,b\leq 10^{14})\)分别表 ...

  7. Codeforces | CF1037D 【Valid BFS?】

    题目大意:给定一个\(n(1\leq n\leq 2\cdot10^5)\)个节点的树的\(n-1\)条边和这棵树的一个\(BFS\)序\(a_1,a_2,\dots,a_n\),判断这个\(BFS\ ...

  8. Codeforces | CF1029D 【Concatenated Multiples】

    \(qwq\)昨天晚上\(Div.3\)过了这道题...早上交了\(1A\)...看在\(CF\)上\(hack\)的情况并不乐观而且也没人来交这题的份上...我决定发一篇题解帮\((zhuang)\ ...

  9. codeforces 217E 【Alien DNA】

    倒序考虑每一个操作,对于一个操作$[l, r]$,他产生的影响区间将是$[r+1,r + r + l - 1]$,如果$r+l-1>K$的话,$K$之后的区间我们是不关心的. 暴力扫描这个区间 ...

随机推荐

  1. PAT 7-14 公路村村通

    https://pintia.cn/problem-sets/1111189748004499456/problems/1111189831248850957 现有村落间道路的统计数据表中,列出了有可 ...

  2. IdentityServer4【Topic】之定义资源

    Defining Resources 定义资源 你在系统中通常定义的第一件事是你想要保护的资源.这可能是你的用户的身份信息,比如个人资料数据或电子邮件地址,或者访问api. 你可以通过C#对象模型(内 ...

  3. artTemplate精彩文章(个人阅读过)

    轻量级artTemplate引擎 实现前后端分离—基础篇 :https://www.imooc.com/article/20263 轻量级artTemplate引擎 实现前后端分离—语法篇 : htt ...

  4. linux 安装 SVN server

    安装 使用yum安装非常简单: yum install subversion 配置 2.1. 创建仓库 我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下 ...

  5. tomcat启动的时候报错Failed to start component

    在idea中运行tomcat时,遇到异常,异常信息如下: 16-Jan-2018 16:33:37.325 信息 [localhost-startStop-1] org.apache.catalina ...

  6. C# Note18: 使用wpf制作about dialog(关于对话框)

    前言 基本上任何software或application都会在help菜单中,有着一个关于对话框,介绍产品的版权.版本等信息,还有就是对第三方的引用(add author credits). 首先,看 ...

  7. laravel5.3安装redis扩展包

    1,编辑 laravel 根目录下的 composer.json 文件: "require": { "php": ">=5.6.4", ...

  8. React Native & debug & debugger

    React Native & debug & debugger http://localhost:8081/debugger-ui/ react-devtools # yarn: $ ...

  9. 前端框架framework和库library的一点区别和记录

    本篇纯文字,无关代码,只是一点概念的记录 关于所谓前端 首先学的是HTML5.CSS3.JavaScript这三个 之后接触了一下UI框架,如layui和bootstrap 目前是打算去学VUE和an ...

  10. linux 查看路由表

    随便转载,保留出处:http://www.cnblogs.com/aaron-agu/ route –n