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

最后

有些点:

  1. 我发现有的题你提前想代码实现反而打的更慢了
  2. 对于一个感觉无法下手的,可以先想办法把条件变成有固定值或部分有单调性的狮子,再找它与那些算法有类似的性质(平时练习应该有时间给我干这事)
  3. 还没想好
posted @ 2025-08-03 21:49  姜树  阅读(8)  评论(0)    收藏  举报