传送门


最小值最大考虑二分答案,不难发现当最小值\(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

转载于:https://www.cnblogs.com/Itst/p/11624213.html

CF1190E Tokitsukaze and Explosion 二分、贪心、倍增、ST表相关推荐

  1. 【CodeForces - 514D】R2D2 and Droid Army(二分+滑动窗口ST表,或 尺取+单调队列或STLmultiset)

    题干: An army of n droids is lined up in one row. Each droid is described by m integers a1, a2, ..., a ...

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

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

  3. poj3264Balanced Lineup(倍增ST表)

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

  4. 洛谷P4094 [HEOI2016/TJOI2016]字符串【后缀数组+主席树+st表】

    时空限制 2000ms / 256MB 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为n的字符串s,和m个问题.佳媛姐姐必须正确 ...

  5. 【cogs2711】jump,二分答案+倍增套ST表

    传送门 思路: 好久没写题解了来爽一发 还是比较有意思的一道题目 首先想到二分答案x,我们枚举每一个点i,点i在x步内所能到达的点显然能形成一个区间[L i ,R i ] [L_i,R_i],那么[1 ...

  6. 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]

    题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...

  7. 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析

    目录 一.倍增算法 二.倍增算法的应用:求LCA(最近公共祖先)附模板题 三.倍增算法的应用:RMQ 问题(ST表)附模板题 一.倍增算法 要了解倍增之前,强烈建议大家先看一下这位大佬对倍增的解释:[ ...

  8. 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析

    目录 一.倍增算法 二.倍增算法的应用:求LCA(最近公共祖先)附模板题 三.倍增算法的应用:RMQ 问题(ST表)附模板题 一.倍增算法 要了解倍增之前,强烈建议大家先看一下这位大佬对倍增的解释:[ ...

  9. BZOJ3166 [Heoi2013]Alo 【可持久化trie树 + 二分 + ST表】

    题目 Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题. 现在你拥有n颗宝石,每颗宝石 ...

  10. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

最新文章

  1. js控制复选框选中显示不同表单_Vue之 表单
  2. C#控件 Datagriview控件
  3. 2008 noip 传纸条
  4. 【软件设计师】2020-08-06
  5. python 概率分布_python实现概率分布
  6. 第十一周项目3-程序的多文件组织
  7. vant状态页组件van-empty - 使用篇
  8. 马斯克惹麻烦?特斯拉股票一夜暴跌12%,千亿市值蒸发
  9. sublime press key “escape” can't type anything
  10. 问答| car-like robot为何需要设置多个坐标系?
  11. python和c先学哪个-C和Python我该先学什么?
  12. 【WC2008】【BZOJ1271】秦腾与教学评估(二分,前缀和,奇偶性乱搞)
  13. oauth2 单点登录_六个高Star开源项目,让你更懂OAuth和单点登录
  14. CRT链接ubuntu报错The remote system refused the connection
  15. 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
  16. cve20190708补丁的kb名称_kb4499175补丁下载
  17. vue.js 菜鸟学习
  18. win10 网卡优先级修改
  19. hdu-4565(矩阵快速幂+推导)
  20. python迭代器是什么百度百科_【python】迭代器与生成器究竟是什么?看完你就知道...

热门文章

  1. 函数r语言_[R learning]-0006-R语言的基本函数
  2. 树展示 移动端_企业快速搭建移动BI轻应用,怎么少得了这款BI工具
  3. opencv 梯度幅值_20、 OpenCV导数和梯度
  4. vscode css智能补全_让你编码嗨到停不下来的8个VSCode插件
  5. vue element 调用后台下载文件
  6. 怎么修照片多余的部分_眉毛不会画怎么办?眉笔眉粉染眉膏到底怎么选?看完就会了...
  7. 鸿蒙是安卓改名,EMUI更名为鸿蒙,这几个问题的答案马上就能揭晓!
  8. IDEA 常用设置 与 常用操作(一)
  9. LayaAir Geolocation 获取地理位置
  10. Android 控件 之 Adapter 基础讲解