随笔分类 - 动态规划-计数DP
摘要:大概是组合计数问题的基础,因此稍微写一下。 或者说,尝试复习,发现自己都不会了,所以应该写一下。 约定 这一类问题都可以在问题确定是,用两个参数 \(n,r\) 来描述。其中 \(n\) 表示球数, \(r\) 表示盒数。 为了方便描述,以下用一串二进制码表示问题的状态。例如 0101 : 第一位表
阅读全文
摘要:题目 题目描述 对于给定参数 \(n, m, k\) ,合法的正整数序列 \(a,b\) 分别满足: \(a\) 和 \(b\) 的长度都是 \(k\); \(\sum_{i=1}^k a_i=n\) 且 \(\sum_{i=1}^k b_i=m\); 现在对于合法的 \(a\) 和 \(b\),定
阅读全文
摘要:题目 点这里看题目。 分析 首先我们对边进行定向:从 \(d\) 小的指向 \(d\) 大的。于是我们就一定会得到一个 DAG(参考题目条件)。 问题就相当于是求出这个 DAG 的拓扑序的方案数。 众所周知,这个问题目前还没有多项式算法,所以我们就可以弃题了 且慢,我们的图原先是一个仙人掌。仙人掌就
阅读全文
摘要:题目 点这里看题目。 分析 题目明显是要求我们求方案数。 显然这道题没有办法直接做。 考虑转化一下题目条件。可以发现我们应该让 \(A\) 中多余的 1 换到 \(A\) 中缺少 1 的位置去。为了使描述更加清晰,我们这样定义: 公共点(\(P\)):满足 \(A_i=1\land B_i=1\)
阅读全文
摘要:题目 点这里看题目。 分析 首先,由于仅仅是 " 存在 " 这一条限制很容易导致计重,且总方案数就是 $10^n$ 。我们就可以考虑求补集,也就是不存在的情况。 然后有一个很显然的 DP : \(f(i,S)\):序列长度为 \(i\) ,此时序列的和 \(\le X + Y + Z\) 的极长后缀
阅读全文
摘要:题目 点这里看题目。 分析 首先我们可以考虑不存在任何限制的时候该怎么做。 根据 \(Pr\overset{..}{u}fer\) 序列直接得出答案为 \(n^{n-2}\) 。 忽略那种做法,因为它难以处理 LCA 的限制。看到 \(n\) 很小,我们可以想到一个状态压缩的 DP : \(f(u,
阅读全文
摘要:题目 点这里看题目。 分析 感觉比往年的 NOIP 的 D2T1 更难。不过看看 D1T3 也就觉得挺合理了。 32pts 暴力搜索不多说,时间 \(O(m(m+1)^n)\) ,其中的 \(O(m)\) 用于检查。 64pts 这是考场上的思路,想了大概 10 min 不到。 针对 \(m\) 很
阅读全文
摘要:题目 点这里看题目。 分析 不难看出一个暴力 DP : \(f(u,i)\):当$u$取$i$时,$u$的子树内的方案数。 转移显然: \(f(u,i)=\prod_{v\in son(u)}\sum_{j\le i} f(v,j)\) 再设$S(u,i)=\sum_{j\le i}f(u,j)$,
阅读全文
摘要:题目 点这里看题目。 分析 首先不难想到可以枚举递增的序列,最后在答案里面乘上$n!$,于是有$O(nk)$的暴力 DP 一枚: $f(i,j)$表示长度为$i$、最大值$\le j$的序列的贡献和。 转移显然: \(f(i,j)=j\times f(i-1,j-1)+f(i,j-1)\) 那么可以
阅读全文
摘要:题目 点这里看题目。 分析 首先对数组进行排序。然后我们先给每组分配最大值和最小值。这样每对最大值和最小值在排序后的数组上可以表示为一条线段。而没有被选定的点,其贡献的方案数为覆盖它的线段数量。根据乘法原理,此时总方案数为每个未选定的点的贡献的积。 至于计算方案,我们不难想到用 DP 。可以发现当前
阅读全文
摘要:题目 "点这里" 看题目。 分析 可以想到用 DP 解决。 由于把空位放到状态里面太麻烦了,因此我们单独将 " 组 " 提出来进行 DP 。 $f(i,j)$:前$i$个人组成$j$个组的方案数。 此时这个组是有顺序有编号的,并且按照编号相邻(由于在环上,$j$ 组和 $1$ 组也算相邻)。 考虑三
阅读全文
摘要:题目 点这里看题目。 分析 我们不妨来考虑一下生成的序列有什么性质。 为了方便表示,我们将序列$S$的第$i$项写为$S[i]$。 首先考虑如果所有的$A$序列都是递增的,那么我们得到的序列肯定是递增的。如果存在递减的情况,例如其中某个序列$B\in{A_1,A_2,\dots,A_n}$,存在$B
阅读全文
摘要:题目 设$a,b$分别为$1\sim n$的排列。 求有多少个排列对$(a,b)$满足$\sum_{i=1}^n\max\{a_i,b_i\}\ge m$。 两个排列对$(a,b)$和$(c,d)$不同当且仅当存在一个$i$,使得$a_i\not=c_i$或者$b_i\not=d_i$。 数据范围为
阅读全文