分治
xiaoxiaoluo
这个作者很懒,什么都没留下…
展开
-
zoj 2107最短点对
题目大意:要你求最短点对的中点距离 解题思路:分治法求最短点对,具体参考《算法设计与分析》(郑宗汉 郑晓明) p100面。 把点按照X坐标的大小从小到大排列,然后把点按Y坐标从小到大排列。 把点集二分,递归求出左边点集合的最短点对距离,和右边点集最短点对距离。取最小值d 取中轴左右d距离的点对,比较这些点对的距离,看是否小于d。 #include #include #inc原创 2012-08-07 10:18:47 · 1031 阅读 · 0 评论 -
poj 2299 求逆序对
题目大意:求逆序对 解题思路:分治法,类似于归并排序。 A[1.....n],将原问题划分为2个子问题A[1...n/2], A[n/2+1....n],并且两个子数组已经排好序了,1..n/2的逆序对已经求好,n/2+1...n的逆序对也已经求好了 所以求两个子问题之间的逆序对,在归并排序的过程中,当A[i] 特别注意当j已经扫描完时,逆序对要加 j - n / 2 - 1 #in原创 2012-06-24 01:46:37 · 1940 阅读 · 1 评论 -
poj 1007 分治求逆序对
题目大意:给出一组字符串,给这组字符串按逆序对数从小到大排列。 解题思路:按分治类似归并排序算法求出每个字符串的逆序对数,在用快速排序排列 求逆序对数类似poj 2299题 http://blog.csdn.net/xiaoxiaoluo/article/details/7686942 这里注意的是当逆序数相同时,按照字符串原先的相对位置输出。 #include #includ原创 2012-07-26 02:50:38 · 749 阅读 · 0 评论 -
poj 2479 求两段子数组和相加的最大值
题目大意:给出一组数字序列,要你求出两段子数组和两者相加的最大值 解题思路:求出1~i的序列的子数组和的最大值,i~n的序列的子数组和的最大值 然后枚举k, 1 关于求数组连续的子数组最大和,《编程之美》上有O(n)的求法。 求法如下: 考虑元素a[k], 以及最大的一段数组a[i]~~a[j] 1.当k = i = j时,元素a[k]本身构成了和的最大一段。 2.当k=i原创 2012-06-18 01:56:52 · 1667 阅读 · 0 评论