凸包
Freopen
这个作者很懒,什么都没留下…
展开
-
20200603 模拟赛 排列
题解: n!n!n!个排列可以看做n!n!n!个nnn维点,那么序列xxx可以被构造出来当且仅当xxx在这些点的凸包上(是刚好在表面上而非内部。) 探索在凸包上的条件: 1.∑x=n(n+1)2\sum x = \frac {n(n+1)}2∑x=2n(n+1) 2.∑i=1kyi≥k(k+1)2\sum_{i=1}^k y_i \geq \frac {k(k+1)}2∑i=1kyi≥2k(k+1),其中yyy是给xxx按从小到大排序得到的数组。 这两个条件都是必要的。 第二个条件,因为前kkk..原创 2020-06-03 22:01:35 · 201 阅读 · 0 评论 -
lost my music(二分弹凸包+可回退化栈)
n<=5e5n<=5e5n<=5e5 首先你得知道这个题如果是一个序列那就是斜率优化的模板题,维护下凸壳即可。 我们可以想到一个极其暴力的算法: 在树上走一步相当于在凸包上加入一个点,需要先弹栈。 回溯的时候就把弹掉的栈给回退就行了。 这是O(n2)O(n^2)O(n2)的,因为凸包的复杂度是均摊的,不支持可持久化和可回退化。 但是栈支持。 所以只是因为凸包的删点次数太多了我们才...原创 2019-10-31 15:01:40 · 234 阅读 · 1 评论