计数类dp
_Shmily
这个作者很懒,什么都没留下…
展开
-
POJ -- 3046、Ant Counting (多重集组合数,计数类dp)
题目vj链接题面:题意:有 TTT 种物品,第 iii 种物品有 nin_ini 个。从中选出若干个物品组成一个集合,问集合大小位于区间 [S,B][S,B][S,B] 的不同的集合有多少个。两个集合相同当且仅当两个集合相同种类的物品个数一样。题解:我们设 dp[i][j]dp[i][j]dp[i][j] 为选择了前 iii 种物品且集合大小为 jjj 时不同的方案数。转移方程显然: dp[i][j]=∑k=0min(j,ni)dp[i−1][j−k]dp[i][j]=\sum\limi原创 2020-09-05 09:00:21 · 162 阅读 · 0 评论 -
HDU--4248、A Famous Stone Collector (计数类dp)
题目链接题面:题意:有 nnn 种颜色的石子,第 iii 种颜色的石子有 aia_iai 个。我现在要从里面选出若干个石子拍成一排,问有多少种不同的序列。两个序列不同当且仅当长度不同或者至少有某个位置的对应颜色不同。题解:考虑 dp[i][j]dp[i][j]dp[i][j],表示我考虑的前 iii 种颜色的石子,现在构成的长度为 jjj 的序列的不同排列的方案数。转移方程显然 dp[i][j]=∑k=0min(sum[i],j)dp[i−1][j−k]∗Cjkdp[i][j]=\sum原创 2020-09-05 08:08:43 · 174 阅读 · 0 评论 -
2020 年百度之星·程序设计大赛 - 初赛三---- HDU--6787、Chess(计数类dp)
题目链接题面:题解:设dp[i][j][k]dp[i][j][k]dp[i][j][k]为考虑了前 iii 个位置,其中有 jjj 个位置放置了传送器,到 iii 为止且包括 iii 一共连续放置了 kkk 的传送器的方案数。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<原创 2020-08-25 09:20:28 · 120 阅读 · 0 评论 -
2020 Multi-University Training Contest 3---- HDU--6796、X Number(dfs+计数类dp)
题目链接题面:题意:求区间[l,r][l,r][l,r]中的所有数,其数位众数为ddd,且数位众数唯一的数的个数。题解:先看一下官方题解:我们顺着官方题解的思路,如果当前没有前导0且数位取值没有限制,那么就说明剩下的数位可以任意取值。我们统计出在有限制的情况下,每个数位出现的次数cnt[i],0≤i≤9cnt[i],0\le i\le9cnt[i],0≤i≤9,假设当前求[0,r][0,r][0,r]区间,区间众数为ddd的数的个数( 最终ans(r)−ans(l−1)ans(r)-ans原创 2020-08-25 09:19:17 · 163 阅读 · 0 评论 -
Codeforces Round #289 (Div. 2) F. Progress Monitoring (计数类dp、记忆化搜索、区间dp)
题目链接题面:题意:给定一棵树的 dfs 方式和 dfs序,问满足这个dfs序的不同的树有多少棵。题解:表示状态:dp [ i ] [ j ] = numbers表示 a [ i to j ] 这些节点,以 a [ i ] 为根所能构成的树的方案数。找出答案:ans = dp [ 1 ] [ n ]如何转移:dp [ i ] [ j ] 一 定以a[i]为根,且第一个访问的子节点一定是 a [ i + 1 ] 。所以将 dp [ i ] [ j ] 分为三部分:(1)根原创 2020-08-24 22:08:31 · 86 阅读 · 0 评论