BZOJ4653: [Noi2016]区间
UOJ上卡掉一个点,COGS上卡掉两个点..弃疗,不改了,反正BZOJ上过啦hhh
先把区间按长度递增排序。然后每次用线段树维护区间最大覆盖次数,用一个指针随便扫扫就行了。
//NOI 2016 D2T1
//by Cydiater
//2016.9.18
#pragma GCC optimize("O2")
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <iomanip>
using namespace std;
#define ll long long
#define up(i,j,n) for(INT i=j;i<=n;i++)
#define down(i,j,n) for(INT i=j;i>=n;i--)
#define FILE "interval"
#define INT unsigned int
;
const INT oo=0x3f3f3f3f;
map<INT,INT> lable;
inline INT read(){
,f=;
;ch=getchar();}
+ch-';ch=getchar();}
return x*f;
}
INT num[MAXN],N,M,top=,cnt=,check=,x,y,v,ans=oo;
struct Query{
INT st,nd,len;
}q[MAXN];
struct Tree{
INT maxx,delta;
}t[MAXN<<];
namespace solution{
inline bool cmp(Query a,Query b){return a.len<b.len;}
inline void downit(INT node){
)return;
t[node<<].delta+=t[node].delta;t[node<<|].delta+=t[node].delta;
t[node<<].maxx+=t[node].delta;t[node<<|].maxx+=t[node].delta;
t[node].delta=;
}
inline ].maxx,t[node<<|].maxx);}
void updata(INT leftt,INT rightt,INT root){
downit(root);
if(leftt>y||rightt<x) return;
if(leftt>=x&&rightt<=y){
t[root].maxx+=v;
t[root].delta+=v;
return;
}
INT mid=(leftt+rightt)>>;
updata(leftt,mid,root<<);
updata(mid+,rightt,root<<|);
reload(root);
}
void init(){
N=read();M=read();
up(i,,N){
q[i].st=read();q[i].nd=read();
num[++top]=q[i].st;num[++top]=q[i].nd;
}
sort(num+,num+top+);
up(i,,top)if(!lable[num[i]])lable[num[i]]=++cnt;
up(i,,N){
q[i].len=q[i].nd-q[i].st;
q[i].st=lable[q[i].st];
q[i].nd=lable[q[i].nd];
}
sort(q+,q+N+,cmp);
}
void slove(){
up(i,,N){
].maxx<M&&check<N){
check++;
x=q[check].st;y=q[check].nd;v=;
updata(,cnt,);
}
].maxx>=M)ans=min(ans,q[check].len-q[i].len);
x=q[i].st;y=q[i].nd;v=-;
updata(,cnt,);
}
}
void output(){
if(ans==oo)puts("-1");
else cout<<ans<<endl;
}
}
int main(){
//freopen(FILE".in","r",stdin);
//freopen(FILE".out","w",stdout);
//freopen("input.in","r",stdin);
using namespace solution;
init();
slove();
output();
;
}
BZOJ4653: [Noi2016]区间的更多相关文章
- [BZOJ4653][NOI2016]区间 贪心+线段树
4653: [Noi2016]区间 Time Limit: 60 Sec Memory Limit: 256 MB Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],. ...
- BZOJ4653 [NOI2016] 区间 【线段树】
题目分析: 首先思考一个二分答案的做法.我们可以注意到答案具有单调性,所以可以二分答案. 假设当前二分的答案是$ k $.那么按照大小顺序插入每个区间,同时在末端删除会对答案产生影响的区间.这里不妨用 ...
- 2018.08.17 bzoj4653: [Noi2016]区间(线段树+尺取法)
传送门 将坐标离散化之后直接用尺取法(双指针)+线段树维护. 其实就是说只要目前所有点的被覆盖次数是大于等于m的就移动左指针删除区间更新答案,否则移动右指针加入区间更新答案. 话说忘记排序以及建树的时 ...
- BZOJ4653:[NOI2016]区间(线段树)
Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x ...
- BZOJ4653 [NOI2016]区间 [线段树,离散化]
题目传送门 区间 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就 ...
- 题解【bzoj4653 [NOI2016] 区间】
先按照长度排个序,然后依次添加区间.什么是添加?设这个区间是\([l,r]\),添加就是把\(a_l,a_{l+1},a_{l+2},{...},a_{r}\)都加上\(1\),其中\(a_i\)表示 ...
- BZOJ4653: [Noi2016]区间(线段树 双指针)
题意 题目链接 Sol 按照dls的说法,一般这一类的题有两种思路,一种是枚举一个点\(M\),然后check它能否成为答案.但是对于此题来说好像不好搞 另一种思路是枚举最小的区间长度是多少,这样我们 ...
- 【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 ...
随机推荐
- cxf和spring结合
服务端: 实体: package entity; import java.util.Date; /*** 实体 */ public class Pojo { //温度 private String d ...
- .NET中的垃圾回收
目录 l 导言 l 关于垃圾回收 l 垃圾回收算法 m 应用程序根(Application Roots) l 实现 m ...
- python复习
1.input和raw_input的区别 input假设输入的都是合法的python表达式,如输入字符串时候,要加上引号,而raw_input都会将所有的输入作为原始数据 2.原始字符串前面加上r,e ...
- nginx正向代理,反向代理,透明代理(总结)
1正向代理 正向代理,也就是传说中的代理,他的工作原理就像一个跳板, 简单的说, 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器 这个代理服务器呢,他能访问那个我不能访问的网站 于是我先连 ...
- git初体验(七)多账户的使用
多github帐号的SSH key切换 我有两个github帐号,一个是个人所用,一个是为公司项目所用.如果是单用户(single-user),很方便,默认拿id_rsa与你的github服务器的公钥 ...
- dede使用方法----调用导航
在这里,极力推荐学习dede的朋友们观看老李的零基础织梦仿站系列课程的视频,讲的超级棒的~~ 网址链接是:http://www.dede888.com/15daylessons.html. 好了,言归 ...
- EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
实体框架System.Data.Entity.SqlServer提供者类型”. SqlProviderServices EntityFramework. 的在应用程序配置文件注册状态"置疑 ...
- 解决: is not found. Have you run APT to generate them?
WSSERVLET11: failed to parse runtime descriptor: runtime modeler error: Wrapper class com.gdpy.servi ...
- Android Studio 2.2的新鲜事
转载:http://mp.weixin.qq.com/s?__biz=MzAwODY4OTk2Mg==&mid=2652039482&idx=1&sn=9aa9b204af34 ...
- Eclipse中Jquery报错
在网上看到很多 jQuery-xxx.js 在eclipse中报错的解决方案大多是说 项目右键 Properties->Validation->JSP Content Validator ...