ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Atcoder Educational DP Contest 选做

2022-02-04 14:31:45  阅读:219  来源: 互联网

标签:Atcoder Educational 选做 frac 大于号 AC 即可 cnt dp


颓疯了,来做点题恢复一下状态。

刷水题了!!!

Educational DP Contest

更好的阅读体验

J Sushi

令 \(f_{a,b,c}\) 为 \(1\) 个寿司的盘子有 \(a\) 个,\(2\) 个寿司的盘子有 \(b\) 个,\(3\) 个寿司的盘子有 \(c\) 个的期望步数。

转移就枚举第一次选中了哪一种寿司,乘个选择的概率,加上个 \(\frac{n}{a+b+c}\) 即可。

有一说一我差点没写出来。

AC

O Matching

令 \(f_S\) 为考虑了 \(1,2,\cdots,\text{popcount}(S)\) 内所有左部点,他们匹配的右部点集合为 \(S\) 的方案数,直接枚举 \(S\) 最低位匹配的位置转移就好了。

还算得上有一点技巧性?

AC

Q Flowers

令 \(f_i\) 为最后一个保留的位置是 \(i\) 的最大价值和,然后直接用树状数组优化一下 dp。

AC

W Walk

矩阵快速幂板子,直接把矩阵 \(k\) 次方然后每一个位置加起来即可。

AC

T Permutation

以前学长讲过,现在差点又不会了。

Bonus1:P4099 [HEOI2013]SAO

Bonus2:loj#575. 「LibreOJ NOI Round #2」不等关系

可以发现树形图拓扑序计数问题严格强于其,于是把 Bonus1 代码蒯过来就好了。(雾)

还是讲一下做法:

令 \(f_{i,j}\) 为 dp 完前缀 \(i\),其中第 \(i\) 个位置在拓扑序位于 \(j\) 的方案数,那么可以得到转移方程:

\[f_{i,j}=\begin{cases}\sum_{k=1}^{j-1} f_{i-1,k} &<\\\sum_{k=j}^{i-1} f_{i-1,k}&>\end{cases} \]

前缀和优化即可做到 \(O(n^2)\),AC

不太会 Bonus2,看了下 loj 题解。

上面的 dp 状态都是两维的,不优秀。我们考虑忽略大于号,那么相当于填入若干递增序列,答案明显是一个多重组合数:

\[\frac{n!}{\prod x_i!} \]

然后考虑用容斥来将大于号纳入考虑,有一个大于号没有满足则乘 \(-1\) 的容斥系数:

枚举最后一段递增序列,那么有:(令 \(cnt_i\) 为 \(i\) 这个前缀的大于号数量)

\[f_i=\sum_{j=0}^{i-1}f_j\times(-1)^{cnt_i-cnt_j}\times\frac{1}{(i-j)!} \]

这个东西是分治 FFT 的形式,令 \(F(x)=f_x\times(-1)^{cnt_x},G(x)=\frac{1}{x!}\):

\[F(x)=(-1)^{cnt_i+cnt_{i-1}}\sum_{j=0}^{i-1}F(j)G(i-j) \]

时间复杂度 \(O(n\log^2n)\)。

代码鸽了。

U Grouping

简单状压 dp,复杂度 \(O(2^nn^2+3^n)\)。

AC

V Subtree

首先有一个 \(O(n^2)\) 的 dp,直接把每个点作为根节点,然后设 \(f_{i}\) 表示 dp 完 \(i\) 的子树,且 \(i\) 为黑色的方案数。

优化到 \(O(n)\) 直接换根 dp 即可。

由于模数不是质数,需要维护一个点所有儿子的前缀积和后缀积,典中典了这属于是。

AC

W Intervals

首先将区间按照右端点排序,那么可以设计一个 \(O(n^2)\) 的 dp:

令 \(f_{i,j}\) 为考虑了前 \(i\) 个位置,最近一个 \(0\) 在位置 \(j\) 的最大答案,有:

\[f_{i,j}=\begin{cases}f_{i-1,j}+\sum_{l_k\leqslant j\leqslant r_k=i}&j<i\\\max_{k<i} f_{i-1,k}&j=i\end{cases} \]

第一维滚一下,第二维放在线段树上即可做到 \(O(n\log n)\)。

AC

X Tower

不会啊,自闭了。

首先总重量一定要小于等于承重能力的最大值,也就是总重量是 \(10^4\) 范围,提示我们考虑 \(O(ns)\) 做法。

有一个简单的 \(O(n^2s)\) 就是跑 \(n\) 遍从前往后的背包,但是显然过不了。

考虑安排一个合适的顺序,然后跑一遍背包。

我们考虑若 \(s_a-w_b>s_b-w_a\),那么 \(a\) 放在下面一定优于 \(b\),于是我们按照 \(s+w\) 排序即可。

AC

Y Grid 2

典中典,感觉在 CF 也见过。

容斥,我们令 \(f_i\) 为最后停留在第 \(i\) 个点的所有路径容斥系数之和。

然后直接枚举上一个位置,中间的路径组合数爆算即可。

AC

Z Frog 3

斜率优化板子,在考场上我肯定会选择用李超树碾过去,不过鉴于是练习。就推一推斜率优化吧。

设跳到的最后一个位置为 \(i\),有两个位置 \(j,k\) 可以转移s过来,且 \(j\) 比 \(k\) 优,那么有:

\[f_j+(h_i-h_j)^2+C\leqslant f_k+(h_i-h_k)^2+C \]

化一化式子有:

\[\frac{f_j+h_j^2-f_k-h_k^2}{h_j-h_k}\geqslant 2h_i \]

直接单调队列维护一下凸壳即可。

AC

标签:Atcoder,Educational,选做,frac,大于号,AC,即可,cnt,dp
来源: https://www.cnblogs.com/xiaoziyao/p/15862800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有