大神题。 每个部分分的算法都值得思考。 50pts:状压dp 把节点按深度排序,一定是深度连续的几段,即对应的差分数列只有0/1,在差分数列上进行状压dp,在中间加0,末尾添1。 最外层枚举节点编号保证顺序。 70pts:背包dp 设f[i][j]为含有i个点,深度为j的树的方案数。用带限制的完全背 ...
分类:
其他好文 时间:
2019-10-15 19:26:46
阅读次数:
71
01背包 完全背包 多重背包(优化) 分组背包 混合背包 ...
分类:
其他好文 时间:
2019-10-10 20:38:10
阅读次数:
97
Piggy Bank "HDOJ 1114" 本题就是完全背包的模板题,注意复习一下关于背包九讲中的问什么这里使用的是顺序遍历。 还需要注意的一个问题就是初始化的问题,dp[0]初始化为0,其他的初始化为无穷大。因为最后的状态是背包一定是满的。(具体看背包九讲的ppt的解释) //完全背包的问题 i ...
分类:
其他好文 时间:
2019-10-07 21:18:14
阅读次数:
122
(死亡) 本文部分参照背包九讲(链接点这里) 先看三道题: 01背包,完全背包,混合背包 请记住这个题面:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。 有相似题面的一系列一种组合优化的NP完全问题(附百度百科)就是背包问题。 背包的种类很多, ...
分类:
其他好文 时间:
2019-10-07 11:10:09
阅读次数:
100
"Luogu P1450 [HAOI2008]硬币购物 完全背包+容斥定理" 【Problem Description】 略 【Solution】 上述题目等价于:有$4$种物品,每种物品有$d_i$个,且每种物品的体积为$c_i$,问有多少种方法装满容量为$s$的背包?可以很容易想到跑多重背包即可 ...
分类:
其他好文 时间:
2019-10-06 18:58:07
阅读次数:
82
class Solution { private int w[]; private int dp[]; public int numSquares(int n) { w=new int[(int) (Math.sqrt(n)+1)]; dp=new int[n+1]; for(int i=1;i<=... ...
分类:
其他好文 时间:
2019-10-06 14:52:41
阅读次数:
72
Luogu P5020 货币系统 先把$a$数组排一下序。 从最小的数开始选,显然最小这个数必须选,然后利用完全背包的思想,从$a_i$到最大值筛选一遍,将可以组成的打上标记。 在判断后面的数字时,如果已经被标记过了,就不再选,没有被标记过就标记一下,再筛选一次数(即再做一次完全背包)。 cpp i ...
分类:
其他好文 时间:
2019-10-05 16:16:26
阅读次数:
372
(死亡。。) 只有30分。。 前两题还算正常,第一题数论+二分答案,我又又又把数组开爆了(生死看淡),第二题dp(其实我觉得模拟也还行,就是if太多成功把自己绕晕) 第三题。。算了,先看题吧。。 第一感觉肯定是暴力,这道题部分分挺多,k=0的情况可以用完全背包解决。(30分) 没错我就是这一题有分。 ...
分类:
其他好文 时间:
2019-10-02 20:25:41
阅读次数:
87
一:01背包 题目:有一个容量为T的背包,现有n个物品,每个物品有都有一个体积w[ i ],和自身价值v[ i ],现在要求求出背包能够装的物品的价值最大。每个物品只可以装一次。 基本思路:01背包是背包中的最基础的问题,后面很多背包问题都是01背包和完全背包延伸出来的。01背包的特点是:每一个物品 ...
分类:
其他好文 时间:
2019-09-29 13:02:46
阅读次数:
75
"Luogu P1450 [HAOI2008]硬币购物" 解析 + 刚开始以为是道多重背包题,但看到数据范围后发现此题并不简单 + 首先用完全背包预处理出硬币数量不限制时需要钱的数量 $ \leq 100000 $ 的所有情况 + 发现在预处理中会有不合法的情况,也就是超过硬币数量限制的情况,需要减 ...
分类:
其他好文 时间:
2019-09-26 11:21:03
阅读次数:
89