HPU personal training
K - Two Contests
原题链接:https://agc040.contest.atcoder.jp/tasks/agc040_b?lang=en
题目大意:
给一个区间集合,将这些区间分为两个集合,求两个区间中线段交集的最大值。
解题思路:
首先找到这些区间的右端点在最左端的区间p,左端点在最右端的区间q。
- 如果p,q在同一个集合中,那么这个集合的最大交集就是p_r - q_l,而另一个只放一个最大的区间,得到ans1。
- 如果不在同一个区间,想一下集合区间的特征,含有p的集合S中,区间的右端点都大于p的右端点,那么他们的最大交集就是p_R - min_L{ L属于集合S} + 1,含有q的集合T中,区间的左端点都小于q的左端点,那么他们的最大交集就是min_R{R属于集合T} - q_l + 1.可以知道如果直接从所有集合中找最合适期间,那么找到的这个区间可能既在S集合中又在T集合中,所以不能这样找。因此要用到后缀最小值。首先对于每一个区间存储R-mxl+1和mnR-L+1两个数据。然后按其中一个数据对数组排列大小,(要从大的开始,因为大的在一个集合中,所有比他小的都在另一个集合中,然后从大到小找两个集合中的最小交集,这样就可以用后缀最小值了。)
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + ;
struct aa{
int first,second;
}P;
aa arr[N];//记录区间
int minnore[N];
aa S[N]; bool cmp1(aa a, aa b){
return a.first > b.first;
} int main(){
int q, L, R, mxL = , mnR = 1e9 + , RR, LL;
int flag1 = , flag2 = , maxlen = ;
scanf("%d", &q);
for(int i = ; i < q; i ++ ){
scanf("%d%d", &L, &R);
arr[i].first = L;
arr[i].second = R;
if(L > mxL){
mxL = L;
RR = R;
flag1 = i;
}
if(R < mnR){
mnR = R;
LL = L;
flag2 = i;
}
maxlen = max(maxlen, R - L + );
}
int ans1 = maxlen;
if(mnR >= mxL) ans1 += mnR - mxL + ;
if(flag1 == flag2){
cout << ans1 << endl;
return ;
}
for(int i = ; i < q; i ++ ){
S[i].first = max(arr[i].second - mxL + , );
S[i].second = max(mnR - arr[i].first + , );
}
sort(S, S + q, cmp1);
minnore[q-] = S[q - ].second;
for(int i = q - ; i >= ; i --){
minnore[i] = min(minnore[i + ], S[i].second);
}
int ans2 = ;
for(int i = ; i < q; i ++ ){
ans2 = max(ans2, S[i].first + minnore[i+]);
}
cout << max(ans2,ans1) <<endl;
return ;
}
HPU personal training的更多相关文章
- [EOJ Monthly2019.11][T4]安全带
以下是题干 D. 安全带 单点时限: 1.0 sec 内存限制: 256 MB (前面题干是一堆废话,我把它删了) 简单来说:初始给出一个 n 个点顺次连接而成的环,点有点权,边权是两个端点的点权乘积 ...
- [EOJ Monthly2019.11][T1]纸条
https://acm.ecnu.edu.cn/ 华东师范大学在线评测网站 今天这个题目来自华东师范大学的校赛,比icpc稍难一些,在2019年11月29日周五19:30开始,持续2.5个小时 以下是 ...
- (转)A Recipe for Training Neural Networks
A Recipe for Training Neural Networks Andrej Karpathy blog 2019-04-27 09:37:05 This blog is copied ...
- Method and apparatus for training a memory signal via an error signal of a memory
Described herein is a method and an apparatus for training a memory signal via an error signal of a ...
- Bug Bash in Personal Photo Experience 1/11/2016
In the process of our Personal Photo Experience Project, There are some bugs which hinder our forwar ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2016 Multi-University Training Contests
2016 Multi-University Training Contest 1 2016 Multi-University Training Contest 2 2016 Multi-Univers ...
- 2016 Multi-University Training Contest 2 D. Differencia
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016 Multi-University Training Contest 1 G. Rigid Frameworks
Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
随机推荐
- mysql 登录和退出 和简单得操作命令
{} 是必须要有得,[]是可有,可没有得... SHOW WARNINGS (查看警告信息) SHOW CREATE DATABASE T1; (查看数据得创建sql语句)
- CentOS 8 下 nginx 服务器安装及配置笔记
参考文档 nginx官方文档 安装 在CentOS下,nginx官方提供了安装包可以安装 首先先安装前置软件 sudo yum install yum-utils 然后将nginx官方源加入到yum源 ...
- 极*Java速成教程 - (4)
Java语言基础 多态 多态是面向对象的一大重要特性,如果说封装是隐藏一个类怎么做,继承是确定一系列的类做什么,那多态就是通过手段去分离做什么和怎么做. 向上转型与收窄 在开发者将一类事物封装成类以后 ...
- Linux文件拷贝(6)
本篇介绍文件拷贝操作,主要讲两个命令: 命令 对应英文 作用 tree[目录名] tree 以树状图列出文件目录结构 cp 源文件 目标文件 copy 复制文件或者目录 tree tree命令可以将一 ...
- HDU-1018 BigNumber
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- S-阶乘除法
输入两个正整数 n, m,输出 n!/m!,其中阶乘定义为 n!= 1*2*3*...*n (n>=1). 比如,若 n=6, m=3,则n!/m!=6!/3!=720/6=120. 是不是很简 ...
- 一致性Hash算法(转)
一致性Hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Balance):平衡性是指哈希的结果能够尽可能分布在所有的缓冲(Cache)中去,这样可以使得所有的缓 ...
- P3588 [POI2015]PUS(拓扑排序+线段树)
P3588 [POI2015]PUS 对于每个$(l,r,k)$,将$k$个位置向剩下$r-l-k+1$个位置连边,边权为$1$,这样就保证$k$个位置比剩下的大 先给所有位置填$1e9$保证最优 然 ...
- 使用SecureCRT 8.5快速打开sftp传输文件
一般使用Windows系统上安装的SecureCRT 8.5软件远程连接Linux服务器,通常给Linux系统传输文件或者使用FTP,或者使用SFTP等其他第三方软件,有时Linux系统上还需要做其他 ...
- gp指标信息
RSI: 相对强弱指数,RSI的原理简单来说是以数字计算的方法求出买卖双方的力量对比 强弱指标理论认为,任何市价的大涨或大跌,均在0-100之间变动,根据常态分配 认为RSI值多在30-70之间变动, ...