今天还不错
https://i.imgur.com/Ifg4g1v.png
1. Split With Minimum Sum
最大的要放在个位数,有两个个位数的位置
接着依据大小往前摆
2. Count Total Number of Colored Cells
这题出的不好,因为跟程式没什么关系
可以算出公式解 2n^2 - 2n + 1
3. Count Ways to Group Overlapping Ranges
可以分成好几个集合
其中只要某一集合内的一个 range 被选了
则整个集合都要被选
而最后的答案就是 2^{集合数}
因为对于第一个 group 对每个集合都可以选择选或不选
而决定好第一个 group 则另一个 group 也自动被决定了
至于怎么算出集合数,只要先 sort 之后
每当新的 range 的左端点 <= 当下集合里最大的右端点
就要加进这个集合里
否则就可以开一个新的集合
因为在这之后的 range 一定都不会和之前的相交了
4. Count Number of Possible Root Nodes
可以发现,如果 root 从某个点 u 转移到某个他的子节点 v
则只有 u v 之间的关系会受到影响
令 score_u 是以 u 为 root 时符合的 guess 数
则 score_v = score_u + (guess 里 [v, u] 的数量) - (guess 里 [u, v] 的数量)
所以先跑一次 dfs 算出以 root = 0 时的 score_0
最后再跑第二次 dfs 算出以各个节点当 root 时的 score 是否 >= k 即可