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}\) 即可。

posted @ 2024-10-30 20:05  Luke_li  阅读(49)  评论(0编辑  收藏  举报