估分:(100 + 100 + 0 = 200)
考场:(100 + 20 + 0 = 120)
呵呵,(T2)翻了。。。
(T1)
首先找直径(O(n)),然后考虑观察结构判断。
对于一个(low[x][0]+low[x][1]==ans)的直径(即以(1)为根的树中(x)为转折点)
下面的某一节点(k)下面如果有多条选择的话,那么最多的公共边即为(x)~(k)而非(k)的下面。
所以我们打一个差分然后最后统计总和边即可。
原来(T1)还有更dalao的方法
我们考虑做(low[x][0/1])和(up[x])(哎呀就是上次cheese那道题)。
我们看看如果删了一条边上面的树和下面的树的最长直径是否仍为答案即可。
如果不是则必经边加一。
(T2)
这道题考场打了对拍,拍了很久,明明认为可以(AC)的,结果以暴力分(20)告终(惨痛)
(20%)暴力模拟即可。
(a=1)的情况显然可以用(exgcd)解出来。
(b=0)就是个裸的(a^k=c()%(p))的大步小步((BSGS))。
而后的正解也可以通过等比数列的方式推出上述式子,然后用大步小步即可。
有些许细节需要注意,加油。
大步小步如果用(map)存的话会(T),用(hash)飞快。
(T3)
考场自信心爆棚,没有怎么想这道题(←(sb))
其实我们发现加边操作不会再修改了,所以我们可以暴力将小树合并到大树中。
而询问则可以用主席树来维护。正确性显然。
总结
感觉自己的数论方面还是有待加强。
还有对于一条路径的第(k)大值,想到了线段树,再想想是否可以用主席树来实现。
细节需要注意,不要因为细节失去了(AC)的机会。((Emmm))