20250803
总结
A
这个题就是把数字作为节点,三元组换成边
这时,我们发现原序列两头的数度数一定为1,第2和倒数第2个度数为2.....
先记下每个数的出现次数,一个一个推出来就行了
C
这个题直接用Floyd把字母转换跑一边
然后直接DP,单次贡献值用前缀和预处理解决,时间问题用前缀Min解决
E
先构建一颗最短路树
发现题目中的”好路径“就是在1到i的最短路上存在不在i子树内的x点,在i子树内的y点,1->x->y->i(要求x,y不在最短路树上)
路径长度为dis[x]+dis[y]-dis[i]+dis(x, y)
由于dis[i]是确定的,所以目标转为Min{dis[x]+dis[y]+dis(x, y)}
可以选出不在树上的边,把dis[x]+dis[y]+dis(x, y)从小到大sort一下
可以发现第一次更新的就是最优的,
对于统计答案,可以像LCA一样往上跳,边跳边更新,同时用并查集,知道调到LCA
最后
有些点:
- 我发现有的题你提前想代码实现反而打的更慢了
- 对于一个感觉无法下手的,可以先想办法把条件变成有固定值或部分有单调性的狮子,再找它与那些算法有类似的性质(平时练习应该有时间给我干这事)
- 还没想好

浙公网安备 33010602011771号