
ACM——分治
倚剑笑紅尘
教练,我想学kaldi!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu1007 找最近点对问题(一)
题目链接: 题目大意:给出n个点,求出最近的两个点的距离,最后输出时候这个距离再除以2. 思路: 蛮力算法复杂度很明显为O(N^2)不理想。如果是O(N*logN)就好多了,下面介绍分治算法在解决该问题的具体应用过程。 假设平面上的点按x排序好了,这样最多增加O(N*logN),这再整个算法来看并没有增加复杂度级别。 排好序后,可以划一条垂线,把点集分成原创 2017-08-08 15:26:43 · 513 阅读 · 0 评论 -
poj3714 Raid 找最近点对问题(二)
题目链接:poj3714 题目大意:平面上有两类点,计算属于不同类的顶点对的最小值。 思路: 计算几何求最近点对的变种。 如何求最近点对,在hdu1007 找最近点对问题(一) 中已经介绍过。 这个题属于变种吧,要求两个点分别属于不同集合。 就是在返回长度的时候判断是否属于同一集合,若属于同一个集合,就返回一个很大的数,我用的2e10。 如果不属于同一个集合,才能计算距离,原创 2017-08-08 15:53:24 · 282 阅读 · 0 评论 -
Superset CodeForces - 97B(分治基础)
题目链接:点击打开链接 题意: 给定一个点集 添加一些点后再把这个点集输出来。 添加完点后使得对于点集内任意2个点都满足下面2条中至少一条 1、在同一水平线上或在同一垂直线上 2、所围成的矩阵里有其他点。(包含边界) 要求的添加的点数尽量少 思路: 平面分治 先把点按x轴排序,然后找到中间的点,做一条直线 x = a[mid].x; 然后把所有点都投影到这条直线上,那么对原创 2017-08-08 16:55:09 · 442 阅读 · 0 评论 -
codeforces 448C C. Painting Fence(分治+dp)
题目链接:点击打开链接 题目大意:给出n个杆子,每个杆子有一个长度,每次可以刷一行或一列,问最少刷多少次可以将整个墙刷成黄色。 思路:首先我们能够想到,如果横着刷,为了得到最优解,当前刷的位置的下面也必须横着刷,然后对于每种情况都可以通过n次竖着刷得到整个黄色的墙。 所以我们采取分治的策略进行动态规划,也就是对于每个状态划分为两种情况讨论,如果要刷横向的话,最矮要刷到最矮的柱子的高度才可原创 2017-08-25 23:19:14 · 355 阅读 · 0 评论