【bzoj4444】[Scoi2015]国旗计划 倍增
题目描述
输入
输出
样例输入
4 8
2 5
4 7
6 1
7 3
样例输出
3 3 4 3
题解
倍增
如果将选择的区间按照右端点正方向顺序考虑的话,那么如果选择了某个区间,下一个区间的选择一定是所有左端点小于等于该区间右端点中,右端点最靠后的那一个。
因此首先断环成链,然后选择区间 $[l,r]$ 后,下一个选择就应该是左端点在 $[1,r]$ 范围内,右端点最靠后的。
所以对于每一个区间 $[l,r]$ ,在 $l$ 位置上加入 $r$ ,然后求前缀最大值即可得到每个位置选上一个区间后最远能够覆盖到哪。
我们要求的是覆盖整个圈,因此可以考虑倍增算法,预处理出 $f[i][j]$ 表示从 $j$ 位置选择 $2^i$ 段区间最远能够覆盖到哪。那么上面的全椎最大值就是 $f[0][j]$ 。
根据递推式 $f[i][j]=f[i-1][f[i-1][j]]$ 预处理出 $f$ 数组,然后倍增求解。从大到小枚举 $i$ ,如果加入一段不能覆盖整个圈则加入,否则不加入。最后加上2(本身+无限逼近后剩余的一段)即为答案。
注意一下区间跨越 $m$ 的处理 ,详见代码。
时间复杂度 $O(n\log n)$
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 200010
#define pos(x) lower_bound(v + 1 , v + m + 1 , x) - v
using namespace std;
int a[N] , b[N] , v[N << 1] , f[20][N << 2];
int main()
{
int n , m = 0 , i , j , t , ans;
scanf("%d%*d" , &n);
for(i = 1 ; i <= n ; i ++ ) scanf("%d%d" , &a[i] , &b[i]) , v[++m] = a[i] , v[++m] = b[i];
sort(v + 1 , v + m + 1);
for(i = 1 ; i <= n ; i ++ )
{
a[i] = pos(a[i]) , b[i] = pos(b[i]);
if(a[i] < b[i])
{
f[0][a[i]] = max(f[0][a[i]] , b[i]);
f[0][a[i] + m] = max(f[0][a[i] + m] , b[i] + m);
}
else
{
f[0][1] = max(f[0][1] , b[i]);
f[0][a[i]] = max(f[0][a[i]] , b[i] + m);
f[0][a[i] + m] = max(f[0][a[i] + m] , m << 1);
}
}
for(i = 1 ; i <= m << 1 ; i ++ ) f[0][i] = max(f[0][i] , f[0][i - 1]);
for(t = 1 ; (1 << t) <= m << 1 ; t ++ )
for(i = 1 ; i <= m << 1 ; i ++ )
f[t][i] = f[t - 1][f[t - 1][i]];
for(i = 1 ; i <= n ; i ++ )
{
ans = 0;
if(a[i] < b[i]) a[i] += m;
for(j = t - 1 ; ~j ; j -- )
if(f[j][b[i]] < a[i])
ans += (1 << j) , b[i] = f[j][b[i]];
printf("%d" , ans + 2);
if(i < n) printf(" ");
}
return 0;
}
【bzoj4444】[Scoi2015]国旗计划 倍增的更多相关文章
- [BZOJ4444][SCOI2015]国旗计划(倍增)
链上是经典贪心问题,将线段全按左端点排序后把点全撒在线段右端点上.这里放到环上,倍长即可. 题目保证不存在区间包含情况,于是有一种暴力做法,先将战士的管辖区间按左端点从小到大排序,对于询问x,从x战士 ...
- [BZOJ4444] [Luogu 4155] [LOJ 2007] [SCOI2015]国旗计划(倍增)
[BZOJ4444] [Luogu 4155] [LOJ 2007] [SCOI2015]国旗计划(倍增) 题面 题面较长,略 分析 首先套路的断环为链.对于从l到r的环上区间,若l<=r,我们 ...
- BZOJ4444 SCOI2015国旗计划(贪心+倍增)
链上问题是一个经典的贪心.于是考虑破环成链,将链倍长.求出每个线段右边能作为后继的最远线段,然后倍增即可. #include<iostream> #include<cstdio> ...
- 2019.03.26 bzoj4444: [Scoi2015]国旗计划(线段树+倍增)
传送门 题意简述:现在给你一个长度为mmm的环,有nnn条互不包含的线段,问如果强制选第iii条线段至少需要用几条线段覆盖这个环,注意用来的覆盖的线段应该相交,即[1,3],[4,5][1,3],[4 ...
- BZOJ4444 : [Scoi2015]国旗计划
首先将坐标离散化,因为区间互不包含,可以理解为对于每个起点输出最少需要多少个战士. 将环倍长,破环成链,设$f[i]$表示区间左端点不超过$i$时右端点的最大值,可以通过$O(n)$递推求出. 那么如 ...
- [BZOJ4444][SCOI2015]国旗计划-[ST表]
Description 传送门 Solution 说真的这道题在场上没做出来的我必定是脑子有洞.. 我们用st表记录以某个位置开始,派了1<<j个战士能到达的最远位置. 由于边境线是一圈, ...
- 【BZOJ4444】[Scoi2015]国旗计划 双指针+倍增
[BZOJ4444][Scoi2015]国旗计划 Description A国正在开展一项伟大的计划——国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形 ...
- [SCOI2015]国旗计划[Wf2014]Surveillance
[SCOI2015]国旗计划 A国正在开展一项伟大的计划——国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这 项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了N名 ...
- 4444: [Scoi2015]国旗计划
4444: [Scoi2015]国旗计划 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 485 Solved: 232 Description A国 ...
随机推荐
- Java设计模式(16)——行为模式之模板方法模式(Template)
一.概念 概念 UML简图 角色 使用场景 其实我们常用得抽象类就是这个模式得运用,所以基本上属于比较好理解的一种模式. 二.实践 根据上述角色,给出相应代码 抽象模板 /** * 抽象模板 * * ...
- Java设计模式(8)——结构型模式之组合模式(Composite)
一.概述 定义 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. 简图 角色——对应上图中顶点为Component,左边为Leaf,右边为C ...
- 环境变量Path简介
更多详细专业的详解,请参见:http://www.cnblogs.com/sunada2005/articles/2725277.html 什么是Path变量: PATH环境变量.作用是指定命令搜索路 ...
- 7、Java并发编程:深入剖析ThreadLocal
Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理.首先,本文先谈一下对ThreadLoc ...
- 蓝牙入门知识-CC2541知识
蓝牙是为了能够通信,想要通信就必须遵守一定的规则, Profile 就可以理解为相互约定的规则,因为每个协议栈demo 都会有一个Profile 与之对应, 我们这里的SimpleBLExxx 对应的 ...
- CentOS6.5进不去系统,修复
今天进系统出现问题了,然后在网上搜索了一下解决方案解决了,把解决方法记录下来,方便以后查阅. 输入root密码 #mount | grep "on /" //得到root用户所在分 ...
- Omad群组部署、依赖部署一键解决
本文来自网易云社区 作者:李培斌 前言 基于omad部署平台实现一键部署的实践已有很多成功的经验,杭研QA的技术先锋们也在ks圈里有很多不同的文章去阐述关于这类需求的实现和思路,当然包括我们金融事业部 ...
- 60帧的丝般顺畅 - QQ飞车手游优化点滴
WeTest 导读 加入项目组的这段时间主要是承担性能优化这块的工作,同时也会去实现一些场景材质.特效材质以及工具.今天就性能优化这块分享一下个人的经验. 设备等级划分 设备等级划分是一切优化,LOD ...
- 怎样安装JMeter
JMeter有图形界面, 而且支持中文! JMeter官网地址: http://jmeter.apache.org/ 点击左上角的下载: 点击下面的.zip后缀的压缩包: 解压到本地: JMeter目 ...
- APP性能测试工具-GT(随身调)
GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug Environment).利用GT,仅凭一部手机,无需连接电脑,您即可对AP ...