UOJ222 NOI2016 区间 线段树+FIFO队列
首先将区间按长度排序后离散化端点(这里的“长度”指的是离散化之前区间的实际长度)
然后模拟一个队列,区间按排好的顺序依次进入,直到某个点被覆盖了M次。之后依次出队,直到所有点都被覆盖小于M次
修改和询问覆盖次数可以用线段树实现
//C++11 code
#include <cstdio>
#include <cstring>
#include <algorithm>
;
const int inf=0x7f7f7f7f;
struct Range
{
int left,right;
int len;
void assign(int l,int r) { left=l; right=r; len=r-l; }
};
struct SegTree
{
struct Node
{
; //max-val
;
int total() { return val+tag; }
};
Node node[maxN<<];
int size;
int _val;
void update(int cur,int right)
{
node[cur].val = std::max(node[cur+].total(),node[right].total());
}
void add(int L,int R,int val)
{
_val=val;
__add(,L,R+,,size);
}
void __add(int cur,int rL,int rR,int nL,int nR)
{
if(rL<=nL && rR>=nR)
{
node[cur].tag+=_val;
return;
}
;
);
,rL,rR,nL,mid);
if(rR>mid) __add(right,rL,rR,mid,nR);
update(cur,right);
}
].total(); }
};
Range rg[maxN];
SegTree segt;
int N,M;
];
int valNum;
void input()
{
scanf("%d%d",&N,&M);
int tl,tr;
;i<N;i++)
{
scanf("%d%d",&tl,&tr);
buf[i<<]=tl;
buf[(i<<)+]=tr;
rg[i].assign(tl,tr);
}
}
void discretize()
{
std::sort(buf,buf+(N<<));
valNum=std::unique(buf,buf+(N<<))-buf;
;i<N;i++)
{
rg[i].left=std::lower_bound(buf,buf+valNum,rg[i].left)-buf;
rg[i].right=std::lower_bound(buf,buf+valNum,rg[i].right)-buf;
}
}
int solve()
{
int res=inf;
auto cmpIdx=[](const Range& A,const Range& B)->bool { return A.len<B.len; };
std::sort(rg,rg+N,cmpIdx);
discretize();
segt.size=valNum;
,tail=-;
)
{
while((++head)<N && segt.askAll()<M)
segt.add(rg[head].left,rg[head].right,);
if(segt.askAll()<M) break;
else --head;
while(segt.askAll()==M)
{
++tail;
res=std::min(res,rg[head].len-rg[tail].len);
segt.add(rg[tail].left,rg[tail].right,-);
}
}
:res;
}
int main()
{
input();
printf("%d\n",solve());
;
}
UOJ222 NOI2016 区间 线段树+FIFO队列的更多相关文章
- BZOJ.4653.[NOI2016]区间(线段树)
BZOJ4653 UOJ222 考虑二分.那么我们可以按区间长度从小到大枚举每个区间,对每个区间可以得到一个可用区间长度范围. 我们要求是否存在一个点被这些区间覆盖至少\(m\)次.这可以用线段树区间 ...
- [NOI2016]区间 线段树
[NOI2016]区间 LG传送门 考虑到这题的代价是最长边减最短边,可以先把边按长度排个序,双指针维护一个尺取的过程,如果存在包含某个点的区间数\(\ge m\),就更新答案并把左指针右移,这样做的 ...
- Luogu P1712 [NOI2016]区间(线段树)
P1712 [NOI2016]区间 题意 题目描述 在数轴上有 \(N\) 个闭区间 \([l_1,r_1],[l_2,r_2],...,[l_n,r_n]\) .现在要从中选出 \(M\) 个区间, ...
- BZOJ4653 [NOI2016]区间 [线段树,离散化]
题目传送门 区间 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就 ...
- BZOJ4653: [Noi2016]区间(线段树 双指针)
题意 题目链接 Sol 按照dls的说法,一般这一类的题有两种思路,一种是枚举一个点\(M\),然后check它能否成为答案.但是对于此题来说好像不好搞 另一种思路是枚举最小的区间长度是多少,这样我们 ...
- 洛谷$P1712\ [NOI2016]$区间 线段树
正解:线段树 解题报告: 传送门$QwQ$ $umm$很久以前做的了来补个题解$QwQ$ 考虑给每个区间按权值($r-l$从大往小排序,依次加入,然后考虑如果有一个位置被覆盖次数等于$m$了就可以把权 ...
- BZOJ4653:[NOI2016]区间(线段树)
Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x ...
- 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 45 Solved: 30[Submit][Status][Discuss] D ...
- hdu 1540 Tunnel Warfare (区间线段树(模板))
http://acm.hdu.edu.cn/showproblem.php?pid=1540 Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) ...
随机推荐
- oracle查询语句2【转载】
本文使用的实例表结构与表的数据如下: scott.emp员工表结构如下: SQL> DESC SCOTT.EMP; Name Type Nullable Defaul ...
- 怎样打开64位 Ubuntu 的32位支持功能?
怎样打开64位 Ubuntu 的32位支持功能? 现在有一个让你可以在64位系统中使用32位软件的方法,就在你读了这篇文章然后照着做了之后就可以了.如果你有一个13.10或更高版本的Ubuntu/De ...
- [转]使用Linux命令行测试网速
装speedtest-cli speedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行.它基于Speedtest.net的基础架构来测 ...
- [LeetCode] Word Break 解题思路
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...
- 通过例子学python(1)
第一章 基础知识 1.4 数字和表达式 # -*- coding: cp936 -*- # 1.4 数字和表达式 # ** 表示幂(乘方)运算 #1.4.1 长整型数 print(9999999999 ...
- Spring注入-Map
在spring框架中为Map注入属性 1map映射的对象创建 package com; /** * Map集合在spring中的使用测试 */ public class User { private ...
- MyEclipe10中集成Tomcat7
1.MyEclipse|Servers|Tomcat|Tomcat 7.x 2.Enable 3.Browse:D:\Tomcat 7.0 4.JDK:下拉选择JDK7.0,注意:千万不能在此处右键A ...
- 389. Find the Difference
一开始没看见shuffle...觉得同时遍历不就完事了.. 和那个所有数字出现2,有一个出现3次还是什么的一样,CHAR可以完美和INT相互切换. public class Solution { pu ...
- Android 官方文档:(二)应用清单 —— 2.2 <action>标签
syntax: <action android:name="string" /> contained in: <intent-filter> descrip ...
- TCP/IP(84) 详解
http://blog.csdn.net/zhangskd/article/category/873810