十月做题记录

10月5日

CF1145E S2oj模拟赛T1 S2oj模拟赛T2 CF1093F

10月4日

AT2666 P4326 CF351B

10月3日

AT1947 CF425A S2oj模拟赛T3 S2oj模拟赛T1(P3540)

\(P3540 [POI2012]SQU-Squarks\)

\(Solution:\) image

10月2日

AT690 AT2643 AT5392 CF803F

\(CF803F Coprime Subsequences\)

\(Solution:\) 用子序列的个数减去 \(gcd >1\) 的子序列个数。倒序枚举因子 \(i\),记录下来序列中 \(i\) 的倍数总数 \(sum\),然后用 \(f_i\) 记录下来,即 \((2^{sum} - 1)\) 种。枚举 \(i\) 的倍数 \(j\),然后从 \(dp_i\) 中减去 \(dp_j\) 即以 \(i\) 的倍数作为 \(gcd\) 的。

\(AT5392 [ABC165F] LIS on Tree\)

\(Solution:\) 树上 \(LIS\)

\(AT690\)

\(Solution:\) 首先选择一条边 \((u,v)\),则问题转化为求 \(f(u),f(v)\)\(u,v\) 为根的子树的染色方案后组合答案。设 \(f(u)\) 为子树 \(u\) 的染色方案,\(sz(u)\) 为子树 \(u\) 的边数。\(f(u)\)\(f(v)\) 的答案组合在一起 \((v∈son(u))\)。对于一个 \(v\) 加入 \(v\) 后共加入了 \(sum\) 条边,责共有 \(\binom{sum}{sz(v) + 1}\) 种方案选择加入 \(sz(v) + 1\) 条边的位置。初始令 \(sum = 0,f(u)=1\) 每加入一个儿子 \(v\),就 \(sum = sum + sz(v) + 1,f(u) = f(u) \times \binom{sum}{sz(v)+1} \times f(v)\)

\(AT2643 [ARC076B] Built?\)

\(Solution:\) 切比雪夫距离最小生成树。一定在横坐标相邻或者纵坐标相邻的点之间连边。

10月1日

CF54C AT4546 AT923 AT4536 CF333B AT4815

\(CF54C First Digit Law\)

\(Solution:\) 概率\(DP\) + 期望\(DP\)。 由数位 \(DP\) 可得到第 \(i\) 个数为 \(1\) 开头的概率。设 \(f[i][j]\) 表示前 \(i\) 个数有 \(j\)\(1\) 开头的概率,\(f_{i,j} = p_if_{i-1,j-1} + (1-p_i)f_{i-1,j}\) 转移即可。

\(AT4546 Grid 2\)

\(Solution:\) \(DP\) + 容斥。设 \(h_i\) 表示从起点走到第 \(i\) 个障碍点不经过其他障碍点的方案数。设 \(\boldsymbol{g}_{i}=\left(\begin{array}{c}x_{i}-1 \\x_{i}+y_{i}-2\end{array}\right)\) 表示不考虑经不经过其他障碍点的方案数。\(h_i\) 的值应为 \(g_i\) 再减去由 \((1,1)\) 经过 \(i\) 之前的障碍点走到第 \(i\) 个障碍点的方案数。简单 \(DP\) 即可。

\(AT923 IOI Manju\)

\(Solution:\) 背包\(DP\) + 前缀和。

\(AT4536 Matching\)

\(Solution:\) 状压\(DP\)。 设 \(f_{i,S}\)\(A\)\(i\) 个人跟 \(S\) 匹配的方案数(转移时满足 \(i = popcnt(S)\))。转移找到一个 \(j\),使得 \(i\)\(j\) 有边并且 \(j\) 当前没有匹配过,更新 \(f(i + 1, S \cup j)\),找到一组新的匹配。

\(CF333B Chips\)

\(Solution:\) 注意存在两个芯片在中间相遇答案减一。

\(AT4815 [ABC154E] Almost Everywhere Zero\)

\(Solution:\) 数位\(DP\)

posted @ 2022-10-01 10:21  Altwilio  阅读(41)  评论(0编辑  收藏  举报