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

浙公网安备 33010602011771号