Tricks
曼哈顿距离与切比雪夫距离互相转换
设两点 $(x_1,y_1),(x_2,y_2)$,则有:
$d_m=|x_2-x_1|+|y_2-y_1|$
$~~~~~=\max(x_2-x_1,x_1-x_2)+\max(y_2-y_1,y_1-y_2)$
$~~~~~=\max(x_2-x_1+y_2-y_1,x_1-x_2+y_2-y_1,x_2-x_1+y_1-y_2,x_1-x_2+y_1-y_2)$
$~~~~~=\max((x_2+y_2)-(x_1+y_1),(x_1-y_1)-(x_2-y_2),(x_2-y_2)-(x_1-y_1),(x_1+y_1)-(x_2+y_2))$
$~~~~~=\max(|(x_2+y_2)-(x_1+y_1)|,|(x_2-y_2)-(x_1-y_1)|)$
也就等于$(x_1+y_1,x_1-y_1),(x_2+y_2,x_2-y_2)$ 之间的切比雪夫距离。
同理,倒过来推,可以将 $(x_1,y_1),(x_2,y_2)$ 间的切比雪夫距离转化为 $(\frac{x_1+y_1}{2},\frac{x_1-y_1}{2}),(\frac{x_2+y_2}{2},\frac{x_2-y_2}{2})$ 间的曼哈顿距离;
至于这个东西的用处...当然是很有用的啦,曼哈顿距离可比切比雪夫距离好算多了是不是~不过要注意一个小细节:切转曼的时候,一开始的坐标可以不/2,否则可能因为无法整除而WA,不如最后再将答案/2,这样就一定是个整数了;
斐波那契循环节
今天看hywn的blog,尝试学到点什么,发现她写了一个:%10^x的意义下,斐波那契的循环节是6*10^x;不过呢...这个...好像是错的...
组合数恒等式
$n\binom{m}{n}=m\binom{m-1}{n-1}$
欧拉回路
from rqy:
你考虑一个欧拉回路,首先假设欧拉回路都是从1出发的,然后对每个点x令p(x)表示回路中最后一次进入x的边,可以发现p(2),p(3)...p(n)会形成一棵以1为根的外向树,这是因为这些边不会形成环(如果若干个点的p形成一个环,那么容易推出矛盾)并且除了1之外每个点都有一条入边。然后你可以对于每个点,把它们剩下的入边任意排序,表示这些边依次的顺序。这样就有$t_1(G)*deg(1)!*\prod_{i=2}^n (deg(i)-1)!$。然而从1出发的话p(1)是有deg(1)种选择方式的。相当于每种方案算了deg(1)遍,因此总方案就是$t_1(G)*\prod_{i=1}^n(deg(i)-1)!$。
取模小技巧
对 $2^{32}$ 取模的小技巧:全程使用unsigned int,让它自然溢出,输出的时候是"%u";