专栏文章

警钟……?

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioj7v7n
此快照首次捕获于
2025/12/02 20:06
3 个月前
此快照最后确认于
2025/12/02 20:06
3 个月前
查看原文
收录一些题目或解法方面的错误/天才想法/trick。

1.trick

1-1.切比雪夫距离和曼哈顿距离互转

切比雪夫距离 d2=max(x1x2,y1y2)d_2=\max(|x_1-x_2|, |y_1-y_2|),曼哈顿距离 d1=x1x2+y1y2d_1=|x_1-x_2|+|y_1-y_2|
2×max(a,b)=a+b+ab(a,b0)(a+b=a+b)a+b={a+b,ab0ab,ab<0ab={ab,ab0a+b,ab<0a+b+ab=a+b+abd2((x1,y1),(x2,y2))=max(x1x2,y1y2)=x1x2+y1y2+x1x2y1y22=(x1x2)+(y1y2)+(x1x2)(y1y2)2=(x1+y1)(x2+y2)+(x1y1)(x2y2)2=d1((x1+y1,x1y1),(x2+y2,x2y2))2=d1((x1+y12,x1y12),(x2+y22,x2y22))2\times\max(a,b)=a+b+|a-b|\\ (a,b\geqslant 0)\Rightarrow (a+b=|a+b|)\\[10pt] \Big||a|+|b|\Big|=\begin{cases}|a+b|,ab\geqslant0\\|a-b|,ab<0\end{cases}\\ \Big||a|-|b|\Big|=\begin{cases}|a-b|,ab\geqslant0\\|a+b|,ab<0\end{cases}\\ \therefore \Big||a|+|b|\Big|+\Big||a|-|b|\Big|=|a+b|+|a-b| \\[10pt] \begin{aligned}%align 会出现 (1)(2)(3) 号 &d_2\Big((x_1,y_1),(x_2,y_2)\Big)\\ =&\max(|x_1-x_2|, |y_1-y_2|)\\ =& \dfrac{\Big||x_1-x_2|+|y_1-y_2|\Big|+\Big||x_1-x_2|-|y_1-y_2|\Big|}2\\ =& \dfrac{|(x_1-x_2)+(y_1-y_2)|+|(x_1-x_2)-(y_1-y_2)|}2\\ =&\dfrac{|(x_1+y_1)-(x_2+y_2)|+|(x_1-y_1)-(x_2-y_2)|}2\\ =&\dfrac{d_1\Big((x_1+y_1,x_1-y_1),(x_2+y_2,x_2-y_2)\Big)}2\\ =&d_1\left((\dfrac{x_1+y_1}2,\dfrac{x_1-y_1}2),(\dfrac{x_2+y_2}2,\dfrac{x_2-y_2}2)\right) \end{aligned}
同理换元(令 a=x+y,b=xya=x+y,b=x-y)可得 d1((x1,y1),(x2,y2))=d2((x1+y1,x1y1),(x2+y2,x2y2))d_1\Big((x_1,y_1),(x_2,y_2)\Big)=d_2\Big((x_1+y_1,x_1-y_1),(x_2+y_2,x_2-y_2)\Big)。(注意 xx+y,yxyx\gets x+y,y\gets x-y 的时候切比雪夫距离转曼哈顿距离需要除以 22,而曼哈顿距离转切比雪夫距离的时候不需要。)
三维空间切比雪夫距离和曼哈顿距离不能直接互转,因为曼哈顿是八面体(66 个顶点)而切比雪夫是正方体(88 个顶点)。但是如果保证两点都在 x+y+z=Cx+y+z=C 平面上,两点间曼哈顿距离恰好等于其切比雪夫距离的 22 倍。遇到六边形最短距离的时候可以往这方面想,例题:2025 hdu 多校#7 1002 龙族栖息地

1-2. 旋转坐标系 45 度

yi+dxixj+yj{yi+dxixj+yj(yixi)+d(yjxj)yi+dxi+xj+yj(yi+xi)+d(yj+xj)i.e. xi+dxj, yi+dyj.y_i + d \geqslant |x_i-x_j| + y_j\Rightarrow\\ \begin{cases}y_i+d\geqslant x_i-x_j+y_j\Rightarrow(y_i-x_i)+d\geqslant (y_j-x_j)\\ y_i+d\geqslant -x_i+x_j+y_j\Rightarrow (y_i+x_i)+d\geqslant(y_j+x_j)\end{cases}\\ \text{i.e. }x'_i+d\geqslant x'_j,\ y'_i+d\geqslant y'_j. —— 「NAPC #2」rStage3 ~ Hard Jump Refreshers

1-3. 拆绝对值

比如我们有 dpimaxj<i(dpj1+aiaj)dp_i\gets\max_{j<i}(dp_{j-1}+|a_i-a_j|),因为 x±x|x|\geqslant \pm xmax(x,x)=x\max(x,-x)=|x|,那么可以直接把转移方程写成 dpimaxj<i(dpj1+(aiaj))=ai+maxj<i(dpj1aj),dpimaxj<i(dpj1+(ajai))=ai+maxj<i(dpj1+aj)\\dp_i\gets \max_{j<i}(dp_{j-1}+(a_i-a_j))=a_i+\max_{j<i}(dp_{j-1}-a_j),\\ dp_i\gets \max_{j<i}(dp_{j-1}+(a_j-a_i))=-a_i+\max_{j<i}(dp_{j-1}+a_j),这样分别维护 dpi1±aidp_{i-1}\pm a_i 的前缀最大值就能 O(n)O(n) 做完了。(当然如果原方程改成 min\min 就要求绝对值前面是负号,否则把 x|x| 拆成 ±x\pm x 就会产生增根。)

2.经典模型

2-1. 六边形平面上的最短距离(见 1-1)

2-2. 正权图求最长路

如果都是正权边且最长路不是正无穷,一定不存在环,可以直接使用拓扑排序解决。
否则仍然可以拓扑排序,然后没被访问到的节点都是正无穷,因为他们在环里面或环后面。
如果边权有正有负那只能 spfa 了。

3.常见错误

  1. (组合)把 x1+x2++xnmx_1 + x_2 + \dots + x_n \leqslant m 解个数问题和 =m= m 解个数问题的答案搞混了,前者是后者对于 i=0mi = 0 \to m 求和也就是 (n1+in1)=(n+mn)\sum \binom{n - 1 + i}{n - 1} = \binom{n + m}n
  2. 在有负环的图上跑 SPFA 的时候 dis 记得开 ll,如果边权是 10910^9 量级的话负环跑几圈就爆 int 了。

评论

0 条评论,欢迎与作者交流。

正在加载评论...