传送门


最小值最大考虑二分答案,不难发现当最小值\(mid\)确定之后,原点到所有直线的距离一定都是\(mid\)时才是最优的,也就是说这些直线一定都是\(x^2+y^2=mid^2\)的切线。

接下来考虑一个点会被哪些切线所保护。作出这个点到圆的公切线,得到两个切点,那么在这两个切点之间的优弧上选择一个点,以它为切点的切线就可以保护当前点。也就是说能够保护一个点的切线的切点在圆上表现为一段角度的区间。可以用解析几何计算出这个角度的区间。

接下来需要在\([-\pi , \pi]\)上选择不超过\(M\)个点使得所有区间都被包含,但是区间在环上不太好做。考虑断环成链,将每个角度区间复制一份,左右端点均增加\(2\pi\),这样我们只需要在数轴上选择\(M\)个点满足按照左端点排序之后连续的\(N\)个区间都包含了至少一个点。

设某个方案中选择的数轴上最左边的点能够影响的最左的区间为\(p\)。我们枚举\(p\),然后贪心地向后选点。设\(f_p\)表示最大的\(r\)满足\([p,r)\)的所有区间有交,这个可以二分+ST表维护。那么我们选点一定会选择将\([p,f_p)\)覆盖,然后就到达了以\(r\)为最左区间的问题。那么如果\(f^M_p=f_{f_{...f_{p}}} \geq p + N\),那么当前的二分值就是合法的。

我们维护一个倍增数组\(jump_{p,x}\)表示\(f^{2^x}_p\),这样就可以在\(O(logN)\)的复杂度内check以\(p\)为链起点是否满足条件。

值得注意的一个细节是在上述转换之后,在第二步内求出的区间原本因为要在\([-\pi,\pi]\)内所以要拆成两段,但断环成链之后就不需要了。只是右端点可以不在\([-\pi , \pi]\)内,但是左端点一定要在\([-\pi , \pi]\)之内,否则可能出现连续的一段区间中包含了两个来自同一个点的区间的情况。这东西很难拍,下面有一个样例QAQ

6 3
42627 44146
-20187 70146
-37387 7977
-90009 -46598
-31234 -47643
45206 -23994

Code

CF1190E Tokitsukaze and Explosion 二分、贪心、倍增、ST表的更多相关文章

  1. BZOJ_2006_[NOI2010]超级钢琴_贪心+堆+ST表

    BZOJ_2006_[NOI2010]超级钢琴_贪心+堆+ST表 Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的 音乐 ...

  2. P7599-[APIO2021]雨林跳跃【二分,倍增,ST表】

    正题 题目链接:https://www.luogu.com.cn/problem/P7599 题目大意 \(n\)棵树,在某棵树上时可以选择向左右两边第一棵比它高的树跳,现在\(q\)次询问从\([A ...

  3. 浅谈 倍增/ST表

    命题描述 给定一个长度为 \(n\) 的序列,\(m\) 次询问区间最大值 分析 上面的问题肯定可以暴力对吧. 但暴力肯定不是最优对吧,所以我们直接就不考虑了... 于是引入:倍增 首先,倍增是个什么 ...

  4. 【NOI2010】超级钢琴 题解(贪心+堆+ST表)

    题目链接 题目大意:求序列内长度在$[L,R]$范围内前$k$大子序列之和. ---------------------- 考略每个左端点$i$,合法的区间右端点在$[i+L,i+R]$内. 不妨暴力 ...

  5. 【BZOJ1047】[HAOI2007]理想的正方形 (倍增ST表)

    [HAOI2007]理想的正方形 题目描述 有一个\(a*b\)的整数组成的矩阵,现请你从中找出一个\(n*n\)的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: ...

  6. NOIP 2012 疫情控制(二分+贪心+倍增)

    题解 二分时间 然后一个显然的事是一个军队向上爬的越高它控制的点越多 所以首先军队尽量往上爬. 当一个军队可以爬到根节点我们记录下它的剩余时间T和它到达根结点时经过的根节点的子节点son. 当一个军队 ...

  7. bzoj 3796: Mushroom追妹纸【二分+后缀数组+st表】

    把三个串加上ASCII大于z的分隔符连起来,然后求SA 显然每个相同子串都是一个后缀的前缀,所以枚举s1的每个后缀的最长和s2相同的前缀串(直接在排序后的数组里挨个找,最近的两个分别属于s1和s2的后 ...

  8. poj 3264 倍增 ST表

    #include<iostream> #include<cmath> using namespace std; ; int a[maxn]; ]; ]; int quick(i ...

  9. poj3264Balanced Lineup(倍增ST表)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 52328   Accepted: 24551 ...

随机推荐

  1. springboot工程启动即执行一段代码

    最近在做一个项目, 需要Tomcat启动后就执行一段代码 在这里需要用到CommandLineRunner这个接口, Spring boot的CommandLineRunner接口主要用于实现在应用初 ...

  2. Linux操作系统安全-加密和安全扫盲篇

    Linux操作系统安全-加密和安全 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.墨菲定律 墨菲定律: 一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出 ...

  3. 201871010135-张玉晶《面向对象程序设计(Java)》第四周学习总结

    201871010135-张玉晶<面向对象程序设计(Java)>第四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...

  4. pydev离线安装及安装后eclipse中不显示解决办法

    eclipse插件安装方法(离线安装)pydev进入eclipse目录1.创建links目录2.复制压缩包到目录前解压3.在links目录下新建pydev.link文件(记事本修改后缀名即可)4.py ...

  5. Hbase优化:(待重点研究)

    一.服务端调优 1.参数配置 1).hbase.regionserver.handler.count:该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB ...

  6. nodemcu固件的烧录及lua开发

    一.板子介绍 NodeMCU 1.0/ESP 8266 12E 该模块是安信可公司生产的,并且提供全部开发资料. 对该模块的开发有两种方式: 一种是基于乐鑫官方推出的SDK开发包在 安信可ESP的一体 ...

  7. MacOS更改启动台(launchpad)图标大小

    原文链接:https://www.jianshu.com/p/18224d191bd2作者:麦壳君 小麦有点强迫症,觉得 Mac 启动台(Launchpad)里面系统默认的应用程序图标太大,所以想让它 ...

  8. 从三数之和看如何优化算法,递推-->递推加二分查找-->递推加滑尺

    人类发明了轮子,提高了力的使用效率. 人类发明了自动化机械,将自己从重复的工作中解脱出来. 提高效率的方法好像总是离不开两点:拒绝无效劳动,拒绝重复劳动.人类如此,计算机亦如是. 前面我们说过了四数之 ...

  9. springboot使用thymeleaf模板问题

    返回 org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/implementsfun/index] ...

  10. 图的遍历 | 1034 map处理输入数据,连通块判断

    这题写得比较痛苦.首先有点不在状态,其次题目比较难读懂. “Gang”成立的两个条件:①成员数大于两个  ②边权总和大于阈值K 首先,在录数据的时候通过map或者字符串哈希建立string到int的映 ...