Difference between revisions of "2019 ECNU XCPC March Selection 4"
Jump to navigation
Jump to search
Xiejiadong (talk | contribs) |
Xiejiadong (talk | contribs) |
||
Line 51: | Line 51: | ||
== Problem E == | == Problem E == | ||
+ | 感觉也是比较基本的 dp 。 | ||
+ | 看到数都不是很大,于是我们考虑从这点入手设计状态。 | ||
+ | |||
+ | $f[i][j]$ 表示从第 $i$ 位开始,消成 $j$ 所需要的位置数量(显然,一定是连续的一段)。 | ||
+ | |||
+ | 考虑状态转移,如果 $f[i][j-1]>0$ 而且 $f[i+f[i][j-1]][j-1]>0$ ,也就是出现了两段消完以后连续的两个数一样,那么可以继续消,也就是 $f[i][j]=f[i+f[i][j-1]][j-1]+f[i][j-1]$ 。 | ||
== Problem F == | == Problem F == |
Revision as of 13:45, 28 March 2019
ECNU XCPC March Selection #4
可能是 dp 专场了。
推荐资料
dp 没啥好推荐的资料。
打开 codeforces ,搜索 tag 为 dp 的,刷题。
Problem A
了解一下补题的重要性?
显然补题不只有这个作用。
要是补题还是不明显,以后可能还会这么搞。
[题解]
Problem B
Problem C
经典盒子装球问题中的一种。
可以 dp ,状态为:
$f[i][j]$ 表示 $i$ 个球放入 $j$ 个盒子的方案数。
搜索也是可以的:
$dfs(n,k,x)$ 表示将 $n$ 分成 $k$ 份,最小的一份 $\ge x$ 的方案数。
显然答案是 $dfs(m,n,0)$ 。记忆化搜索一下。
Problem D
经典大背包问题。
折半搜索。
考虑枚举 $20$ 个物品的时候的情况。
也就是把 $40$ 个物品分成两半枚举出所有情况,针对其中的一边,二分最优解的位置。
题解过于见解看不懂的。出门左转[大背包问题分析]
Problem E
感觉也是比较基本的 dp 。
看到数都不是很大,于是我们考虑从这点入手设计状态。
$f[i][j]$ 表示从第 $i$ 位开始,消成 $j$ 所需要的位置数量(显然,一定是连续的一段)。
考虑状态转移,如果 $f[i][j-1]>0$ 而且 $f[i+f[i][j-1]][j-1]>0$ ,也就是出现了两段消完以后连续的两个数一样,那么可以继续消,也就是 $f[i][j]=f[i+f[i][j-1]][j-1]+f[i][j-1]$ 。