摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1392 模板题,套二维凸包,然后计算凸包周长。 唯一要注意的是两个点的时候,不用两点距离的两倍。代码如下: 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <set> 5 #include <iostream> 6 #include <algorithm> 7 #include <vector> 8 9 using namespace 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1007 最近点对。 做法是先对所有点先按x再按y排序,然后进行分治搜索最近点对。对于每个区间,如果点数小于3,就直接暴力搜索最近点,否则对其进行分治。分治出来的两个区间,我们要挑选出与中点距离小于已找到的最近距离的所有点,然后对他们进行暴力枚举最近距离。根据《算法导论》证明的,合并两个区间之后,被挑选出来的点不会超过6个,于是可以得到总的时间复杂度是O(nlogn)。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2604 题意是找出长度为n的,不包含“fmf”或“fff”的字符串的个数。 这题我是直接套用之前的ac自动机的模板的,构造出自动机,然后利用矩阵快速幂求出结果。当然,这题可以直接推出递推公式,然后再套入矩阵中。复杂度O(m^2 log n),其中m是矩阵大小,n是要求计算的长度。代码如下: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <iostream> 5 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2966 一道KD树的题。题意是,给出n个不重合的点,求出这n个点的最邻近点的距离的平方。 什么是KE树就不介绍了,网上有许多KD的资料,做这题前先阅读材料。我的方法参考的是http://blog.csdn.net/zhjchengfeng5/article/details/7855241这个博客的代码,划分的过程直接调用STL中的nth_element,从而减少代码量。 我的做法是直接用点集数组构建线性存储的一棵KD树,然后用类似于线段树操作对点集进行划分和查找。因为题目的特殊性,于是我们可以将查找的时... 阅读全文