【题解】Solution Set - NOIP2024模拟赛2

【题解】Solution Set - NOIP2024模拟赛2

Contest

Official Solution


T1 接力比赛

考场思路是直接暴力跑两个背包 dp,然后 1e9,1s 过了。

正解的话,还是比较有意思的。

首先她把第二个背包的容量取负,然后答案就是容量为 0 的 dp 值。

然后我们感性理解一下,如果当前的容量的绝对值很大了,那么她几乎是不可能回到 0 的,特别是整个序列的足够随机的时候。

数学证明了如下结论:

一个初值为 0 的变量 x,每次有 50% 的概率 +150% 的概率 1。目标是在操作 n 次以后变为 0

对于某一次操作结束后如果有 |x|n,那么她一定是不能变回 0 的。(并且这个上界是比较松的(?

所以对于这道题而言,我们把两个班的人放在一个序列里面,然后 random_suffle() 一下舍弃掉那些容量大于 Vn 的 dp 值。


T2 树上竞技

难点其实是:

  1. 想到计算每个点的贡献转化为每一条边的贡献。

  2. 组合意义得出递推式。

具体做法可以参见题解。



T4 记忆碎片

考虑一个 dp。

fi,s 表示联通了权值从 1i 的边,联通状态为 s 的方案数。

s 储存的是整张图中每个联通块的大小(从小到大。

那么状态数即为 40 的正数划分 P(40)=37338

考虑转移:

如果 i 是一条非树边,那么这条边对方案数的贡献就是所有联通块内部任意连边。

如果 i 是一条树边,那么在当前状态下一定会合并两个联通块,于是在所有大小不同的联通块中枚举两个然后将她们合并。显然大小不同的联通块一共有 O(n) 个,所以每次枚举是 O(n) 的,一共要合并 n1 次。所以总时间复杂度为 O(n2P(n))

posted @   CloudWings  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· 大模型工具KTransformer的安装
· [计算机/硬件/GPU] 显卡
点击右上角即可分享
微信分享提示