这题做的我真是23333。。。奥,这题表述不清,是说曼哈顿距离 11 #include 12 #include 13 14 #define lson p > 1;64 if (L k) {82 L = a[j].y - k + 1, R = a[j].y, del...
分类:
其他好文 时间:
2014-11-16 15:57:23
阅读次数:
322
题目大意:给出一些袜子的排列顺序,每次问一段区间中有多少相同颜色的袜子对。
思路:莫队算法真是一个神奇的算法。首先,暴力枚举是O(n^2)的时间复杂度,这肯定是不行的。假如区间是保证不重合的,那么就可以将总的时间转移的复杂度降到O(n)。很遗憾,题目中没有这个保证。于是乎,神秘的莫队就发明了一种神奇的算法。
对于每一个询问,我们将它看成一个平面上的点(x1,y1),同样的也就会有其他的...
分类:
编程语言 时间:
2014-11-13 16:43:29
阅读次数:
226
题目大意:求出曼哈顿距离最小生成树上的第k大边权。
思路:首先,你要了解:http://blog.csdn.net/acm_cxlove/article/details/8890003
也就是说,我们以每一个点为中心,把平面分成8个部分,每一个部分我们只需要离这个点最近的点。然后加上建一条边连接这个边和最近的点。然后就是MST。
听说这个算法是莫队算法的基础,我现在就去学。
...
分类:
其他好文 时间:
2014-11-12 17:57:17
阅读次数:
211
题意:给出一个n*n的矩阵,然后m个operation,1表示坐标(x,y)的值加z,2表示与坐标(x,y)的曼哈顿距离不超过z的点的权值和。
解题思路:将矩阵侧过来45度,发现询问的时候,有效的点构成的其实是一个矩阵。然后就变成了单点修改,求矩阵和的问题。我们考虑裸二维树状数组的做法,会发现矩阵太大,但是注意到,初始的时候,矩阵里面所有的值都为0,那么这个二维树状数组中,有效的点就是修改的那些...
分类:
编程语言 时间:
2014-11-08 19:41:28
阅读次数:
211
题目大意:给定n个点,每个点有一个颜色,m次询问,每次询问一个区间内随机选出两个点颜色相同的概率是多少
OTZ莫队算法……
具体做法无论是分块还是曼哈顿最小生成树网上都讲解的很详细 我就不累述了
这个题的做法是记录一个cnt数组表示当前区间内每种颜色有多少个
加入一个颜色为x的点就ans+=cnt[x] 然后cnt[x]++
减少一个颜色为x的点就cnt[x]-- 然后ans-=cnt[...
分类:
编程语言 时间:
2014-11-07 11:20:29
阅读次数:
270
因为没多少时间所以挑几道最近做的有意思的题目写写。在 N*M 的方格中选出三个记为 A, B, C,则费用为 |AB|+|BC|+|AC|.(|AB| 表示 AB 两点之间的曼哈顿距离。)求费用在区间 [minT, maxT] 内的选择方案数。N, M <= 4000。我们可以考虑任意的三对坐标,$...
分类:
其他好文 时间:
2014-10-31 23:29:24
阅读次数:
271
HDU 1533 Going Home
题目链接
题意:就是一个H要对应一个m,使得总曼哈顿距离最小
思路:KM完美匹配,由于是要最小,所以边权建负数来处理即可
代码:
#include
#include
#include
#include
using namespace std;
const int MAXNODE = 105;
typedef int ...
分类:
其他好文 时间:
2014-10-30 22:37:26
阅读次数:
242
BZOJ200题纪念!一个非常巧妙的方法求曼哈顿距离:如果原来坐标是(x, y),令新的坐标为(X, Y), 其中X = x + y, Y= x - y那么:曼哈顿距离 = |x1 - x2| + |y1 - y2| = max(|X1 - X2|, |Y1 - Y2|)于是我们先进行坐标变换,按X...
分类:
其他好文 时间:
2014-10-22 12:34:05
阅读次数:
259
HDU 5067 Harry And Dig Machine
思路:由于点才10个,在加上一个起点,处理出每个点之间的曼哈顿距离,然后用状压dp搞,状态表示为:
dp[i][s],表示在i位置,走过的点集合为s的最小代价
代码:
#include
#include
#include
#include
using namespace std;
const int N =...
分类:
系统相关 时间:
2014-10-18 22:25:35
阅读次数:
314
题意:有N个黑点和N个白点,每个黑点只能水平向右和竖直向下延伸,与一个白点配对。权值为两个点之间的曼哈顿距离。求使得n对点均配对最小的配对总权值。
思路:假设存在一组解,那么我们交换一对配对,若依旧能够满足条件,画画图就知道答案不变。
因此对于任意可行配对答案均相同。
于是我们统计出所有黑点的-x+y,所有白点的x-y,累加起来即可。
Code:#include
#inc...
分类:
其他好文 时间:
2014-10-17 12:06:07
阅读次数:
147