十月做题记录
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:\)
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\)。