2024.9.27

First Post:

Last Update:

Word Count:
525

Read Time:
1 min

一直在搭博客没怎么做题啊···

Tourism *2200

首先手玩样例可以发现:环上的点可以都拿,连接环的点也可以都拿。

然后考虑剩下的点。

因为剩下的点只能选一条点权和最大的路径,所以考虑拓扑 dp。

那么答案就是起点到环经过的点 + 环上的点的点权和 +

学到的东西:看到这种类似不能重复走一条边的东西可以考虑缩点双(因为割边走过去不能回来)

Happy Line *2200

感觉很困难。我是性质低手/kk。

假设当前 需要操作,那么操作完后会变成

对于 ,可以发现

不难推出,对于所有 ,都有 为定值。

那么将 排序得到序列 ,答案就是

无解就是存在

学到的东西:对于这种交换位置的题,要往排序想,分析两个元素交换带来的影响(类似微扰法)。

Short Code *2200

读完题瞬间想到一个假做法:按长度从小到大排序,然后模拟。

但这很容易 hack。对于一个很长的串,我们完全可以让它取很短的一部分,让一些短串取稍微长一些。这样比长串取很长短串取很短要优。

那从大到小呢?也不行。

因为很有可能长串取完以后,一些短串作为长串的前缀,就算全取也无法避免重复,这就不合法了。

然后不会了。

正解:

建立 trie 树。此时问题变为:

给一棵树,有一些黑点。可以把黑点移到祖先处,但两个黑点不能在同一个位置。求最小的黑点深度和。

用堆维护每颗子树中黑点的深度,如果根上没有黑点就把最深的移到根。

学到的东西:看到字符串前缀想到 trie(还是字符串做少了)。