题目大意:

  有n个区间,当有m个区间有公共部分时,求m个区间长度的最大值与最小值之差的最小值。

思路:

  按区间的长度从小到大排序,可知连续的几个区间最优,则用两个指针指其头尾,线性扫描,再用线段树区间覆盖。

代码:

 #include<cstdio>
#include<iostream>
#include<algorithm>
#define N 1000009
#define INF 2147483647
using namespace std; int n,m,i,j,cnt,ans=INF,sum[N<<],lazy[N<<],b[N<<];
struct node{ int l,r,len; } a[N]; bool cmp(const node &x,const node &y)
{
return x.len<y.len;
} int find(int l,int r,int x)
{
if (l==r) return l;
int mid=l+r>>;
if (x<=b[mid]) find(l,mid,x);
else find(mid+,r,x);
} void up_date(int k,int x)
{
sum[k]+=x,lazy[k]+=x;
} void change(int cur,int L,int R,int l,int r,int val)
{
if (L==l && R==r) { up_date(cur,val); return; }
int mid=L+R>>;
if (lazy[cur])
{
up_date(cur<<,lazy[cur]);
up_date(cur<<|,lazy[cur]);
lazy[cur]=;
}
if (r<=mid) change(cur<<,L,mid,l,r,val);
else if (l>mid) change(cur<<|,mid+,R,l,r,val);
else change(cur<<,L,mid,l,mid,val),change(cur<<|,mid+,R,mid+,r,val);
sum[cur]=max(sum[cur<<],sum[cur<<|]);
} void solve()
{
for (i=;i<=n;i++)
{
while (sum[]<m)
{
if (j==n) return; j++;
change(,,cnt,a[j].l,a[j].r,);
}
ans=min(ans,a[j].len-a[i].len);
change(,,cnt,a[i].l,a[i].r,-);
}
} int main()
{
scanf("%d%d",&n,&m);
for (i=;i<=n;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
b[++cnt]=a[i].l,b[++cnt]=a[i].r;
a[i].len=a[i].r-a[i].l;
}
sort(a+,a+n+,cmp),sort(b+,b+cnt+);
for (i=;i<=n;i++) a[i].l=find(,cnt,a[i].l),a[i].r=find(,cnt,a[i].r);
solve(); printf("%d\n",ans<INF?ans:-);
return ;
}

最新文章

  1. LaunchScreen.storyboard启动图遇到的坑
  2. 把GAE程序通过SSH部署到 VPS
  3. python处理字符串时出现的错误&#39;ascii&#39; codec can&#39;t decode byte 0xe9 in position 0: ordinal not in range(128)&quot; 解决方法
  4. Entity Framework菜鸟初飞
  5. 【阿里云产品公测】弹性伸缩服务ESS之试用初体验
  6. poj 1390 动态规划
  7. 从Keil 4升级到Keil 5的工程,想返回来用Keil 4打开
  8. libtcmalloc 简单使用
  9. C++ Primer 读书笔记 第1章
  10. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装
  11. PAT1078 Hashing 坑爹
  12. XIB中拖UIScrollView的困难
  13. 论C++的智能指针
  14. java之路 把1到100之间的数的偶数相加
  15. springboot 学习之路 7(静态页面自动生效问题)
  16. samba服务,连接远程开发机
  17. sudo用法记录
  18. tflite笔记
  19. Matlab练习——多项式和一元方程求解
  20. 20145317彭垚《网络对抗》Exp7 网络欺诈技术防范

热门文章

  1. sql server 常用脚本(日常查询所需)
  2. 快速反编绎jar war包
  3. 关于v$datafile中system表空间的status值始终为system
  4. 移除IIS默认的响应头(转载)
  5. ExcelReport第一篇:使用ExcelReport导出Excel
  6. 【mysql中myisam和innodb的区别】
  7. ACM训练计划建议(写给本校acmer,欢迎围观和指正)
  8. SQL Server 2014 BI新特性(一)五个关键点带你了解Excel下的Data Explorer
  9. AOJ673 聪明的输入法(字典树)
  10. 7-13IN和NOT IN 子查询