一些遇到的神奇技巧(?)

一些遇到的神奇技巧(?)

现在还很空,有遇到就填充。(本人学识疏浅,所以有‘?’)

所有证明请自行意会


C++语法类

  1. scanf("%d/%d",&a,&b); 可以读入 a , b 忽略 a b 之间的‘/’
    如:input: 1/3 那么用上述代码输入后 a=1 , b=3

图论类

由于图论在oi里有很多分支,故有多个小标题

  1. 与树上某点最远的点一定是直径端点。

    证明:把直径考虑成一条链,其他节点则长在连着这条链的树上,具体如下图:
    一些遇到的神奇技巧(?)
    那么如果有某一点的最远的点非直径两点,那么这个离它最远的点显然可以替换掉上图中的部分链(证明不是很严谨,意会)

  2. 只改变一条边,树的直径至多改变一个端点

    证明:假设新直径其中一个节点为s,与s距离最远的一点必为原直径其一端点,具体可以参考1的证明,所示1的广义情况应用。


dp类


数学类