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 ...
随机推荐
- ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发
说说传统做法的缺点 1.做过多语言的都知道这玩意儿太花时间 2.多语言架构一般使用资源文件.XML或者存储数据库来实现.这样就在一定程序上降低了性能 3.页面的可读性变差,需要和资源文件进行来回切换 ...
- 在VS2010 下编译 cocos2d-x-2.1.4
首先感谢 cocos2d-x 团队为我们做出这么好的跨平台框架,让我们这些码农省了很多时间,事半功倍. 里沃特最近在编译 win32 版本的时候最到一点小问题,现在记录下,说不定能帮到某些初学的朋友. ...
- DNS资源纪录(Resource Record)介绍
http://dns-learning.twnic.net.tw/bind/intro6.html 类型 SOA NS A AAAA PTR CNAME MX -------------- ...
- 内网穿透神器ngrok——将本地项目驾到外网
相信做Web开发的同学们,经常会遇到需要将本地部署的Web应用能够让公网环境直接访问到的情况,例如微信应用调试.支付宝接口调试等.这个时候,一个叫ngrok的神器可能会帮到你,它提供了一个能够在公网安 ...
- 判断移动端js代码
var ua=navigator.userAgent.toLowerCase(); var contains=function (a, b){ if(a.indexOf(b)!=-1){return ...
- 跨浏览器事件EventUtil
<div style="width: 150px; height: 150px; padding: 25px; border:1px solid blue; " id=&qu ...
- Cannot change version of project facet Dynamic Web Module to 3.1
最近项目一直报错,看的极度的不爽,于是找了很长时间的解决方案. 先说一下环境Spring + SpringMVC + MAVEN + jdk 1.8 + servlet 3.1 由于是web 项目,这 ...
- 安装centos虚拟机
启动虚拟机提示"无法连接虚拟设备ide1:0,主机上没有相对应的设备" 进入编辑虚拟机设置--选中硬盘--点高级--在 虚拟机设备节点中选ide0:0接行了.
- HTTP协议学习--- (十一)理解HTTP幂等性
在httpcomponent 文档中看到如下段落: 1.4.1. HTTP transport safety It is important to understand that the HTTP p ...
- tarjan求桥、割顶
若low[v]>dfn[u],则(u,v)为割边.但是实际处理时我们并不这样判断,因为有的图上可能有重边,这样不好处理.我们记录每条边的标号(一条无向边拆成的两条有向边标号相同),记录每个点的父 ...