版权原因不公布题目信息
A
分析
虽然前一天搞到比较晚,考场上还是比较快的想到了正解,可惜姿势水平低被卡到了64(进入高中不知道考过多少次64了...)
这题有个比较明显且\(naive\)的做法是用Hash记录树上的信息,我们给树上每个点赋予一个随机的权值,然后通过子树和和子树大小两个信息哈希,然后我比较菜被卡成了64
讲题时才知道树上哈希是很容易被卡的,所以就有一个船新操作:异或哈希。将子树权值异或和来蛤习,如果权值值域很大的话,被卡的可能性就非常小
当然还有另一种做法是用dfs序,因为是一段连续区间我们判断他们最小值最大值就好了
注意
然后在订正的时候发现无论如何还是生成了一些数据范围不那么“随机”的数,然后就发现了一个致命的错误,就是\(rand()\)它默认不是\(unsigned\) \(long\) \(long\)的,你得强制类型转化,难怪会被卡掉...
代码
#include #include #include #include #include #include #include #include
B
分析
首先有个比较显然的是(样例比较良心还提示了)这个答案肯定在最小生成树上
所以5分做法就是枚举挖掉一个点的最小生成树,然而要\(long\) \(long\)就导致我爆零了
然后25分做法是枚举挖掉一个点x后形成du[x]个联通块,将这些联通块与x相邻的点做MST
60分做法就比较神,用可并堆维护当前联通块的返祖边的最小值然后不断合并统计答案,当然要考虑横插边的影响
100分用并查集优化看不懂
C
分析
随机化很好写,5分很好拿
然后面积因为是单位圆直接角度算不用叉积
本来想写个模拟退火但是想不出来怎么做
题解动规我的软肋听不懂,弃疗