T1
打表加贪心,注意模数和一些边界情况。
T4
数据结构或者 dp,可以从颜色角度分别计算共献,也可以从合并的角度统一计算贡献。
T2
首先要发现一个重要的性质:差分数组单调不降。由于差分数组可以是正的或者负的,符合要求的序列分布情况应该类似与向上开口的抛物线(∪),其中最小值在中间位置,两边分别单调上升。
把原序列由小到大排序,设 \(f_{i,j,k,l}\) 表示考虑前 \(\max\{i,k\}\) 个数,左半边最左边的数是在 \(i\) 位,它右边的数在第 \(j\) 位(没有就为 0),\(k,l\) 表示右边信息与 \(i,j\) 同理,这样的方案数。转移就枚举新加的数在左边还是右边,边界当所有数取完就是 1。
对于重复的值,如果是最小值,把它们当成同一个数并成上数量的阶乘;如果不是最小值,只能一边一个,可以正常处理。
用 记忆化搜索 实现并用 unordered_map 记录 dp 数组,可以避免不合法的状态,节约时间空间。
T3
dp,同样用 unordered_map 加记忆化搜索。
首先,如果实力强大的人打弱的人胜率低于一半,可以视作把排名倒过来。
两个重要的性质:当胜率大于等于一半,肯定要安排自己和实力弱的打,然后剩下的人尽量强的和强的打(如果你让很多强的和弱的打,弱的胜出的很少,期望小于强者的一半,所以不如直接强的和强的打)。
设 \(f_{i,j}\) 表示还要打 \(i\) 轮,当前比自己弱的有 \(j\) 个的获得冠军概率,容易列出转移方程,注意当自己是最后一名就必须和强者打。虽然状态看着多,但实际有用的很少,可以用记忆化搜索和 unordered_map 存状态。
标签:map,练习赛,Sun,可以,最小值,2023.6,数组,unordered,dp From: https://www.cnblogs.com/recollect-the-past/p/17981264