首页 > 其他 > 详细

CF1146G - Satanic Panic

时间:2021-05-23 14:49:12      阅读:14      评论:0      收藏:0      [点我收藏+]

CF1146G - Satanic Panic

题目大意

给定平面上\(n\)个点,求能够构成五角星的五元组数目


分析

实际上就是求五元凸包数目,下面直接考虑\(k\)元的形式

考虑凸包的两种判定方法:

1.所有转角\(<\pi\)

然而这并不好实现

2.一个凸包可以根据\(x_i\)最大、最小的两个点分成上下两部分,上下分别判断转角\(<\pi\)

(可以通过随机旋转规避\(x_i\)相同的情况)

(这题\(k\)较小,或许可以上下暴力枚举?)

一般的情况,枚举\(x_i\)最小的点\(A\)

然后令\(dp_{i,j}\)表示当前凸包最后一条折线为\((i,j)\),然后不断接新点

最后合并上下两个凸包

直接实现,单次\(dp\)状态\(O(n^2k)\),转移\(O(n)\),复杂度为\(O(n^4k)\)

优化:

\((i,j)\rightarrow (j,k)\),可以先确定\(j\)

然后按照转角顺序枚举\(k\),双指针完成所有\(k\)的转移

如果预处理每个点出发的转角序,则预处理\(O(n^2\log n)\),总复杂度为\(O(n^3k)\)

(Code消失了)

CF1146G - Satanic Panic

原文:https://www.cnblogs.com/chasedeath/p/14800665.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!