CSP 模拟1
随
考场上一开始没意识到每次乘完要取模,直接想出来个 \(\dfrac{(\sum a_i)^m}{n^m}\) 的答案,然后仔细读了题,写了个矩阵快速递推就不想了(矩阵乘还写挂了)
发现每次是独立的,而且是与模数相关,可以类似快速幂的思路倍增处理,算出 \(2^i\) 时的答案,如果 \(2^i\) 在 \(m\) 的二进制表示中,则统计进总的答案,大概把快速幂中的乘换成更新操作就好了
单
考场上是正确思路,考虑相邻两个节点之差,但不清楚为什么思路没有引向正解
由 \(a\) 求 \(b\) 是显然的,直接换根 dp 两次 dfs 即可
由 \(a\) 求 \(b\) 的思路能导向由 \(b\) 求 \(a\)
考虑换根 dp 中从父亲 \(f\) 转移到儿子 \(x\) 的差值为 \((sum-siz_x)-siz_x\),其中 \(siz_x\) 为以 \(x\) 为根的子树中 \(a_i\) 的和,\(sum\) 为所有 \(a_i\) 的和,假设以 1 为根,那么 \(b_1=\sum_{i=2}^n siz_i\),与前边式子联立可解得 \(sum\),进而就可解得 \(siz_i\),然后解的 \(a_i\)
题
简单组合题,最后十多分钟才开始做,越做越急:
最后只做了 3 个任务
- 因为最后回到原点,所以左右和上下的数量相等,计算 \(\sum_{i=0}^{\frac n2}\binom{n}{i,i,\frac n2-i,\frac n2-i}\) 即可
- 卡特兰数定义,咋算都行
- 直接 \(O(n^2)\) dp 即可
- 把左下和右下看成 \(1\) 和 \(-1\),发现左右和上下都满足卡特兰数的定义,再把左右和上下随便排列即可,式子为 \(\sum_{i=0}^{n/2}C_{i}C_{\frac n2-i}\binom{n}{n-2i}\)
DP搬运工 1
定义 dp 数组 \(f_{i,j,k}\) 的意义如下:
选到 \(i\) 时有 \(j+1\) 个连续段(或有 \(j\) 个空位)并且相邻最大值之和为 \(k\) 的方案数
答案显然就是 \(\sum_{i\le k}f_{n,0,i}\)
考虑如何转移第 \(i\) 个数:
- 直接接在最后一个连续段后面(或第一个前面),对 \(j\) 无影响,对 \(k\) 产生 \(i\) 的贡献
- 在最后一个连续段后边加一个空位,然后接在这个空位后面(或在第一个连续段前面加一个空位,然后接在前面),相当于多了一个连续段,对 \(j\) 产生 \(1\) 的贡献,对 \(k\) 无影响
如果有空位:
- 替换空位,对 \(j\) 产生 \(-1\) 的贡献,对 \(k\) 产生 \(2i\) 的贡献,有 \(j\) 种选择
- 接在空位边上,对 \(j\) 无影响,对 \(k\) 产生 \(i\) 的贡献,有 \(2j\) 种选择
- 将空位拆成两个然后把 \(i\) 放在中间,对 \(j\) 产生 \(1\) 的贡献,对 \(k\) 无影响,有 \(j\) 种选择
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?