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";

posted @ 2019-12-10 08:35  shzr  阅读(248)  评论(3编辑  收藏  举报