[BZOJ4653 区间]
Description
Input
Output
Sample Input
3 5
1 2
3 4
2 2
1 5
1 4
Sample Output
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define M 1000010
#define int long long
#define ls node<<1
#define rs node<<1|1
using namespace std;
int read()
{
char ch=getchar();int x=;
while(ch>''||ch<'') ch=getchar();
while(ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
return x;
} int l,r,n,m,tmp,ans=1e18;
int b[M<<],cnt[M<<],tag[M<<];
struct point{int l,r;}a[M];
bool cmp(point a1,point a2) {return a1.r-a1.l<a2.r-a2.l;} void getans(int l,int r)
{
ans=min(ans,b[a[r].r]-b[a[r].l]+b[a[l].l]-b[a[l].r]);
} int get(int x)
{
int l=,r=tmp;
while(l<=r)
{
int mid=(l+r)/;
if(b[mid]==x) return mid;
if(b[mid]<x) l=mid+;
else r=mid-;
}
} void push(int node)
{
if(tag[node]!=)
{
tag[ls]+=tag[node];
tag[rs]+=tag[node];
cnt[ls]+=tag[node];
cnt[rs]+=tag[node];
tag[node]=;
}
} void change(int node,int l,int r,int l1,int r1,int v)
{
if(l1<=l&&r1>=r)
{
cnt[node]+=v;
tag[node]+=v;
return;
}
if(l1>r||r1<l) return;
int mid=(l+r)/; push(node);
change(ls,l,mid,l1,r1,v);
change(rs,mid+,r,l1,r1,v);
cnt[node]=max(cnt[ls],cnt[rs]);
} main()
{
n=read(); m=read();
for(int i=;i<=n;i++)
{
a[i].l=read(),a[i].r=read();
b[++tmp]=a[i].l,b[++tmp]=a[i].r;
}
sort(a+,a++n,cmp);
sort(b+,b++tmp);
tmp=unique(b+,b++tmp)-b-;
for(int i=;i<=n;i++)
{
a[i].l=get(a[i].l);
a[i].r=get(a[i].r);
}
while()
{
while(cnt[]>=m)
{
getans(l,r);
change(,,tmp,a[l].l,a[l].r,-);
l++;
}
if(r==n) break;
r++;
change(,,tmp,a[r].l,a[r].r,);
}
if(ans==1e18) puts("-1");
else printf("%lld",ans);
return ;
}
[BZOJ4653 区间]的更多相关文章
- 【BZOJ4653】【NOI2016】区间(线段树)
[BZOJ4653][NOI2016]区间(线段树) 题面 BZOJ 题解 \(NOI\)良心送分题?? 既然是最大长度减去最小长度 莫名想到那道反复减边求最小生成树 从而求出最小的比值 所以这题的套 ...
- 【BZOJ4653】【NOI2016】区间 线段树
题目大意 数轴上有\(n\)个闭区间\([l_1,r_1],[l_2,r_2],\ldots,[l_n,r_n]\),你要选出\(m\)个区间,使得存在一个\(x\),对于每个选出的区间\([l_i, ...
- 【BZOJ4653】[Noi2016]区间 双指针法+线段树
[BZOJ4653][Noi2016]区间 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含 ...
- 【BZOJ-4653】区间 线段树 + 排序 + 离散化
4653: [Noi2016]区间 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 107 Solved: 70[Submit][Status][Di ...
- BZOJ4653: [Noi2016]区间
传送门 UOJ上卡掉一个点,COGS上卡掉两个点..弃疗,不改了,反正BZOJ上过啦hhh 先把区间按长度递增排序.然后每次用线段树维护区间最大覆盖次数,用一个指针随便扫扫就行了. //NOI 201 ...
- 【BZOJ4653】【Noi2016D2】区间
原题传送门 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得 ...
- [Noi2016]区间 BZOJ4653 洛谷P1712 Loj#2086
额... 首先,看到这道题,第一想法就是二分答案+线段树... 兴高采烈的认为我一定能AC,之后发现n是500000... nlog^2=80%,亲测可过... 由于答案是求满足题意的最大长度-最小长 ...
- BZOJ4653 [NOI2016] 区间 【线段树】
题目分析: 首先思考一个二分答案的做法.我们可以注意到答案具有单调性,所以可以二分答案. 假设当前二分的答案是$ k $.那么按照大小顺序插入每个区间,同时在末端删除会对答案产生影响的区间.这里不妨用 ...
- 2018.08.17 bzoj4653: [Noi2016]区间(线段树+尺取法)
传送门 将坐标离散化之后直接用尺取法(双指针)+线段树维护. 其实就是说只要目前所有点的被覆盖次数是大于等于m的就移动左指针删除区间更新答案,否则移动右指针加入区间更新答案. 话说忘记排序以及建树的时 ...
随机推荐
- java面试基础题------》int Integer Integer.valueOf
在jdk1.5的环境下,有如下4条语句: 1 2 3 4 Integer i01 = 59; int i02 = 59; Integer i03 =Integer.valueOf(59); Integ ...
- error.log worker_connections exceed open file resource limit: 1024
不按照预期响应请求 nginx.conf中worker_connections 与ulimt -n 配置的冲突
- Cookies Client Identification
HTTP The Definitive Guide Cookies are the best current way to identify users and allow persistent se ...
- Microservices 微服务概念和优点 自治 弹性 级联故障 微服务的问题 CAP 分布式事务 修改一个服务并对其部署而不影响其他任务服务
https://en.wikipedia.org/wiki/Microservices https://zh.wikipedia.org/wiki/微服務 微服務 (Microservices) 是一 ...
- python包管理一防丢失
pip3 freeze >list.txt 导出当前环境安装的所有包(list是当前项目录下的文件,可以自己命名)pip3 install -r list.txt 安装文件中所 ...
- Spring-ApplicationContext容器
Spring ApplicationContext容器 ApplicationContext是spring中比较高级的容器.和BeanFactory类似,它可以加载配置文件中定义的bean,并将所有b ...
- 汉字转换为拼音的JavaScript库
将JSPinyin剥离mootools这个JavaScript库,可以独立使用. 1)一个是将汉字翻译为拼音,其中每一个字的首字母大写: pinyin.getFullChars(this.value) ...
- Linux系统的SVN客户端使用技巧详解
忽略文件/文件夹 假设想忽略文件temp,cd到temp所在的目录下: $ svn propedit svn:ignore . [注意:请别漏掉最后的点(.表示当前目录),如果报错请看后面] 打开的文 ...
- pytorch rnn 2
import torch import torch.nn as nn import numpy as np import torch.optim as optim class RNN(nn.Modul ...
- vim符号列表
Exuberant Ctags工具安装 • 软件简介 Ctags generates an index (or tag) file of language objects found in sourc ...