【问题描述】
给定 N 个区间, 要求选出若干个区间 A1, A2, A3... Am (m > 1), 使得:
|A1∩A2∩A3...∩Am| * |A1∪A2∪A3...∪Am|
最大。
【输入格式】
第一行一个整数 N
接下来 N 行,每行 2 个整数 L, R, 描述一个区间。
【输出格式】
一个数, 为该式最大值。
【输入样例】
4
1 6
4 8
2 7
3 5
【输出样例】
24
【样例解释】
选(1, 6)和(2, 7)
【数据范围】
30% N≤1000
100% N≤1000000
100% L,R≤10 6

首先m=2即可取到最优解(一定).
对区间按左端点第一关键字, 右端点第二关键字排序.
维护一个单调栈. 栈内区间的长度单调递减.
每次退栈头时, 用栈头和压退栈头的区间更新答案. 
压入栈头的时候用原栈头和新栈头更新.

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Interval
{
long long l,r;
}a[];
int q[],n;
long long ans;
bool cmp(Interval a,Interval b)
{
return (a.l<b.l||(a.l==b.l&&a.r<b.r));
}
long long count(int x,int y)
{
if (y==) return ;
return (min(a[x].r,a[y].r)-max(a[x].l,a[y].l))*(max(a[x].r,a[y].r)-min(a[x].l,a[y].l));
}
int main()
{int i,j,tail=;
cin>>n;
for (i=;i<=n;i++)
{
scanf("%lld%lld",&a[i].l,&a[i].r);
}
sort(a+,a+n+,cmp);
for (i=;i<=n;i++)
{
while (tail&&a[q[tail]].r-a[q[tail]].l<=a[i].r-a[i].l)
{
ans=max(ans,count(i,q[tail]));
tail--;
}
tail++;
ans=max(ans,count(i,q[tail-]));
q[tail]=i;
}
cout<<ans;
}

区间(interval)的更多相关文章

  1. 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?

    牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...

  2. 牛客小白月赛5 I 区间 (interval) 【前缀和】

    链接:https://www.nowcoder.com/acm/contest/135/I 题目描述 Apojacsleam喜欢数组. 他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次 ...

  3. [LeetCode] Data Stream as Disjoint Intervals 分离区间的数据流

    Given a data stream input of non-negative integers a1, a2, ..., an, ..., summarize the numbers seen ...

  4. [LeetCode] 352. Data Stream as Disjoint Intervals 分离区间的数据流

    Given a data stream input of non-negative integers a1, a2, ..., an, ..., summarize the numbers seen ...

  5. Ceph源码解析:PG peering

    集群中的设备异常(异常OSD的添加删除操作),会导致PG的各个副本间出现数据的不一致现象,这时就需要进行数据的恢复,让所有的副本都达到一致的状态. 一.OSD的故障和处理办法: 1. OSD的故障种类 ...

  6. SQLserver 获取当前时间

    1. 获取当前日期 select GETDATE() 格式化: select CONVERT(varchar,GETDATE(),120) --2017-05-12 16:33:10 2. 获取当前年 ...

  7. echarts 技巧自己的一些记录

    1.不要输出 window["echarts"].init(chart) ,会卡死. let chart = document.getElementById("chart ...

  8. LeetCode: Merge Intervals 解题报告

    Merge IntervalsGiven a collection of intervals, merge all overlapping intervals. For example,Given [ ...

  9. sql获取时间、年龄

      mysql数据库获取年龄:TIMESTAMPDIFF(YEAR, [出生日期字段], CURDATE()) select * from (select name 姓名,TIMESTAMPDIFF( ...

随机推荐

  1. python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数

    一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...

  2. 转git取消commit

     如果不小心commit了一个不需要commit的文件,可以对其进行撤销. 先使用git log 查看 commit日志 commit 422bc088a7d6c5429f1d0760d008d8 ...

  3. JAVA反射机制基础概念

    反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力.通过这种能力可以彻底的了解自身的情况为下一步的动作做准备.下面具体介绍一下java的反射机制.这里你将颠覆原来对java的理解. J ...

  4. TSP-旅行商问题

    #include <iostream> #include <vector> #include <algorithm> using namespace std; in ...

  5. Webview之H5页面调用android的图库及文件管理

    h5页面打开图片管理器 一般页面在pc打开文件管理器是用 type="file"的代码,可是这在android的webview是无效的,必须为webview设定WebChromeC ...

  6. window.showModalDialog

    //新版本谷歌没有window.showModalDialog,创建一个window.openif(window.showModalDialog == undefined){  window.show ...

  7. Ubuntu安装使用latex

    TeX Live is a TeX distribution to get up and running with the TeX document production system. To ins ...

  8. Mego(2) - NET主流ORM框架分析

    接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM ...

  9. react-native-image-picker 运用launchCamera直接调取摄像头的缺陷及修复

    在前几天用react-native进行android版本开发当中,用到了"react-native-image-picker"的插件:根据业务的需求:点击按钮-->直接调取摄 ...

  10. elk调试环境

    http://10.110.22.30:9100/