CF1929 刷题记录
日期:2024/10/30
内容:CF1929
tag:尚未交到luogu上
T1
tag:前缀和/差分;水题
题意:给定一个数组,你可以任意排列,求差分数组前缀和的最小值。
解法:显然答案是 最大值 \(-\) 最小值 。
T2
tag:贪心;水题
题意:一个 \(n\times n\) 的网格图,初始是白色,要使得至少 \(k\) 条斜对角线上有黑色块,要至少涂黑多少块?
请注意斜对角线是指斜 \(45^\circ\) 的 \(4n-2\) 条直线。
解:容易发现如果 \(k=4n-2\) 那么答案是 \(2n\) ,而我们选一个点的时候,如果选在边缘那么可以一次性覆盖两个对角线。这里为什么要多选一个点,是因为倒数第二、一次选点的时候,主对角线和反主对角线已经覆盖过了,所以一次性只覆盖了一个对角线。因此 if
特判一下即可。
T3
tag:倍投原则;贪心
题意:
有一台狮子机。投入 \(y\) 赌一次,赢了赚 \((k-1)y\) ,输了赔 \(y\) 。连续输 \(x\) 次会触发保底,让你下一次赢。你初始有 \(a\) 元,问你是否对于所有的正整数 \(n\) ,有一种策略保证,无论在什么情况下,你最后都可以得到 \(n\) 元钱。
你可以理解为,赌场老板幸运女神会操纵结果,让最坏的情况发生,不让你成功。根据概率论,如果你和女神僵持不下,但你一直有概率成功,总的来说那你就成功了。
解:
运用到了一个经典trick:倍投原则。
对于这道题,我们发现只要我们不会没钱,而且一定能到达 \(> a\) 的程度,那么我们就可以到达所有钱数。如果钱多了就大手大脚地赌,总会输到对应数值的。如果钱少了就仿照之前的步骤增加钱数。
所以“幸运女神”阻止我们的方法只有一种:不让我们在钱花完以前翻身(或者让我们永远不能翻身),这里“翻身”指的是赚够钱。
此时我们只有一种策略:每次下注的金额 \(y\) 都恰好使得:如果我们赌赢了,那么我们不仅能回本还能再赚一点钱。要求 \(y\) 是满足条件的最小的数。否则假如幸运女神让我们在这一次赌赢,我们就会不赚反而亏。可以证明这种策略是最优的。
由此,每次下注的金额 \(y_i\) 是: \(\frac{1+\sum^{i-1}_{j=1}y_j}{k-1}\) 。
结合数据范围,暴力即可。
T4
逆天树形dp。对着错误思路调了3h(s组的教训犹在眼前啊)。
tag:树形dp
题意:一个树。问你有多少种选择一些点的方案,满足:树上任意两点之间路径上有不超过2个被选中的点。
我的错误思路:正难则反。统计不满足条件的情况,用 \(2^n\) 减去即可。问题在于正着不难反着难,导致调试了数个小时后发现式子错了。
解:直接正着做。令 \(dp_{i,j}\) 表示点 \(i\) 的子树中叶子节点到节点 \(i\) 的路径上恰好最多有 \(j\) 个黑色点。
容易得到递推式 \(dp_{i,1}=\prod_{j\in son_i}(dp_{j,1}+dp_{j,0})\) ,
以及 \(dp_{i,2}=\sum_{j\in son_i}(dp_{j,2}+dp_{j,1})\) 。
最后输出根节点 \(r\) 的 \(dp_{r,0}+dp_{r,1}+dp_{r,2}\) 即可。