9.26总结

省流:死了

T1 由乃的差分

分情况讨论。

  • \(x < 0\)
    最简单的情况,只需要升序输出即可。

  • \(x = 0\)
    其实就是:零不能放最前面,连续两个不一样,先把第一个输出完然后用排序 pair 加上双指针乱搞即可。

  • \(x > 0\)
    这里给一组hack

2
3 7
7 0 0
3 7
7 0 7

hack掉两个同学的输入QWQ
先输出第一个,只要不是 \(x\) 就行,然后与升序输出即可。

注:老师数据过强导致所有人小于 10pts

T2 牛牛的旅行

30pts

暴力枚举端点,然后 LCA,或者是 \(n\) 次树形 DP。

+10pts

\[\sum_{s \not= t}\operatorname{happy}(s, t) = \sum_{s \not= t}val_{max} \times \sum _{s \not= t}\operatorname{len}(s,t) = n(n-1)val\times\sum_{i=1}^{n}cnt_i \]

其中 \(cnt_i\) 是每一条边在所有路径中出现的次数,dp求得。

100pts

根据上一部分中的 \(\sum_{s \neq t}val_{max}\)\(\sum _{s \neq t}\operatorname{len}(s,t)\) 的思路来求得。

重点在第一部分。

提出一个影响域的概念,这个影响域是指域内所有点的点权均不大于当前计算贡献的节点 \(x\) 在树上形成的联通块。

设当前影响域的大小为 \(size_x\),与 \(x\) 直接相邻的节点在影响域中的子树为 \(son_y\),这个贡献就是 \(size_x-size_{son_y} \times size_{son_y}\)

可以采用“时光倒流法”,把节点从小到大排序,然后依次加入合并影响域,用并查集维护影响域的尺寸即可。

T3

30pts

暴力搜索所有字符串暴力排序即可。

10pts - x = 0

全部填上P即可。

20pts

puts("-1");

正解

具体来说,就是SA后缀数组,我也不会,代码是抄的s

posted @ 2024-09-26 15:47  GenesisCrystal  阅读(25)  评论(0)    收藏  举报