摘要:
"嘟嘟嘟" 题面挺迷的,拿第一个样例说一下: 放第一次亵渎,对答案产生了$\sum_{i = 1} ^ {10} i ^ {m + 1} 5 ^ {m + 1}$的贡献,第二次亵渎产生了$\sum_{i = 1} ^ {5} i ^ {m + 1}$的贡献。 反正我们的主要目标就是求$f(n) = 阅读全文
摘要:
"嘟嘟嘟" 本来以为拉格朗日插值是一个很复杂的东西,今天学了一下才知道就是一个公式…… 我们都知道$n$个点$(x_i, y_i)$可以确定唯一一个最高次为$n 1$的多项式,那么现在我们已知这$n$个点,求这个多项式代入$k$时的值。 首先都能想到用高斯消元$O(n ^3)$求出多项式,然后代入$ 阅读全文
摘要:
嘟嘟嘟 k-d tree板儿题。 建完树后对每一个点求一遍最小和最大曼哈顿距离,是曼哈顿,不是欧几里得。 #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #includ 阅读全文
摘要:
嘟嘟嘟 做过[国家集训队]JZPFAR这道题的话,这题就不难了。 我们维护一个长度为$k$的小根堆,在加入第$i$个点之前,用$[1, i - 1]$这些点离点$i$的距离更新答案。这样也能保证每一对点之间的距离一定只算了一次。 #include<cstdio> #include<iostream> 阅读全文
摘要:
嘟嘟嘟 这题强制在线,只能用k-d tree了,否则可以用cdq分治。 刚开始我想仿照二维线段树的做法,只不过每一层把一个矩形沿一维切一刀。这样的话复杂度是$O(mlog ^ 2 n)$的,还是能过。刚想写发现内存只有20M,这不gg了。 最后还是看了题解。 题解果然跟我不一样,最大的区别是查询的时 阅读全文
摘要:
嘟嘟嘟 k-d tree模板之二:查询第k大距离。(所以是怎么上黑的) 因为k-d tree的查询就是暴力嘛,所以我就想到了一个很暴力的做法:每一次查询用一个长度为k的优先队列维护。按距离递增,编号递减的方式排序。 然后查询的时候,如果队列长度大于k了,就尝试用当前节点更新队首。 刚开始没看到k的范 阅读全文
摘要:
嘟嘟嘟 题意:给定$n$个二维平面上的点$(x_i, y_i)$,求离每一个点最近的点得距离的平方。(\(n \leqslant 1e5\)) 这就是k-d tree入门题了。 k-d tree这东西跟平衡树有点像,但却不一样,而且查询的最坏复杂度是$O(\sqrt)$的。 首先推荐两篇博客: K- 阅读全文
摘要:
嘟嘟嘟 求无向图的最大独立集。 有这么一回事:最大独立集=补图的最大团。 所谓的最大团,就是一个子图,满足图中任意两点都有边。 然后ssy巨佬告诉了我一个很没有道理强的做法:随机。 每一次random_shuffle储存节点的数组,然后从头开始扫每一个点,能加入最大团就加入,否则continue。 阅读全文