随笔分类 - 动态规划——背包DP
1
摘要:咕咕
阅读全文
摘要:有体积分别为$1,2,...,8$的物品,给定各自的数量$cnt_1,cnt_2,...,cnt_8$和$W$,求这些物品能组成的最大且不超过$W$的体积和。
$cnt_i\leq 10^{16},\ W\leq 10^{18}$。
阅读全文
摘要:数$x$的价值定义为:$x$十进制表示中第$i$位为$3$则该位价值为$F_i$,该位为$6$价值为$2F_i$,为$9$价值为$3F_i$,否则为$0$,然后所有位上价值相加。
给定$K$。$Q$次询问,每次询问给定$n$,求满足$K$个数的和为$n$情况下,这$K$个数的最大价值和。
$n,K\leq 999999,q\leq 10^5$。
阅读全文
摘要:给一棵$n$个点的树,每个点有体积$a_i$和价值$b_i$,求总容量分别为$1\sim m$时选出一个最大价值独立集(相邻节点不能同时选)的方案数。
$n\leq 50,m\leq 5000$。
阅读全文
摘要:////
阅读全文
摘要:
补完了
阅读全文
补完了
阅读全文
摘要:给定一棵树,任选一个连通块然后做背包,且每个点上的物品至少取一个。求花费为$m$时最大价值。
阅读全文
摘要:"BZOJ" "洛谷" 这个数据范围。。考虑暴力一些把各种信息都记下来。不妨直接令$f[i][j][k][0/1]$表示当前为点$i$,离$i$最近的建了伐木场的$i$的祖先为$j$,$i$及$i$子树一共建了$k$个伐木场。$0/1$表示点$i$是否建了伐木场。 发现对于$i$的子树里的点$v$,
阅读全文
摘要:ooorz
阅读全文
摘要:"BZOJ" "洛谷" 退背包。和原DP的递推一样,再减去一次递推就行了。 cpp //1136kb 56ms include include include define gc() getchar() const int N=2005; int w[N],f[N],g[N]; inline int
阅读全文
摘要:2018.10.21 牛客提高集训营6 比赛链接 不是很懂那些粘人代码还直接交上去的人,在提交记录里很好看么? A 最长路(拓扑 分层) 题目链接 容易想到建反图拓扑。有了最长路后,按最长路对图分层。 因为当前点路径字典序最小,就是要满足第一条边最小后,再满足下一个点路径字典序最小。后者可以直接用上
阅读全文
摘要:"BZOJ" "洛谷" 最小可到达点对数自然是把一条路径上的边不断反向,也就是黑白染色后都由黑点指向白点。这样答案就是$n 1$。 最大可到达点对数,容易想到找一个点$a$,然后将其子树分为两部分$x,y$,$x$子树所有边全指向$a$,$a$与$y$子树之间的边全指向$y$。这样答案就是$sz[x
阅读全文
摘要:题目链接 洛谷 题意:01背包,但重量为$a\times 2b$形式,可能很大。 把重量表示为$a\times2b$的形式,然后按$b$排序。 从高到低枚举每一位,$f[i]$表示当前位容量为$i$时的最大价值(容量即$a\times2^$)。对于同一位,直接$01$背包就行了。 如何转移到下一位?
阅读全文
摘要:给定一棵$n$个点的树。将这$n$个点两两配对,并对每一对点的最短路径染色。求有多少种配对方案使得所有边都至少被染色一次。
$n\leq5000$。
阅读全文
摘要:"题目链接" 如果贪心,正的显然先选。然后处理负的,好像要用背包。 看这数据范围不如直接用背包。$f[i][j]$表示前$i$个物品,剩下$j$个钩子的最大价值。 因为没有钩子的放前面无法转移,所以先按$A_i$排序。 因为数据多 开N N的数组在bzoj上跑的好慢。。 cpp //1048kb 6
阅读全文
摘要:"题目链接" 树形DP,考虑子节点对父节点的贡献。 设f[x][i][j]表示当前为x,用i个x去合成上一层装备,花费为j的最大价值。 由子节点转移时 是一个分组背包,需要一个辅助数组g[i][j]表示前i棵子树花费为j能贡献给x的最大价值。 那么 $g[i][j] = max{g[i 1][j k
阅读全文
摘要:题目链接 一个长度为$n$的循环节,在$k\times n(k\geq 1)$次之后一定会回到原样。 用$a_i$表示每个循环节$i$的长度,那么所有$n$个数字的排数为$lcm(a_1,a_2,\cdots,a_k)(+1)$,其中$a_i$满足$\sum_{i=1}^ka_i=n$. 所以题目实
阅读全文
摘要:"题目链接" $Description$ 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 $\frac{∑pi}{∑si}$ 最大 $Solution$ 01分数规划,然后dp,设f[i][j]表示i子树选j个的最大权值和,直接暴力背包转移即可 在枚举子节点选的数量时,假设x有
阅读全文
摘要:"题目链接" (卡常背包) 朴素的多重背包是: $f[i][j] = \max\{ f[i 1][j k v[i]]+k w[i] \}$,复杂度 $O(nV \sum num_i)$ 可以发现求$\max$时有很多值是被重复枚举过的 换一种方程表示形式,对于每个$v[i]$,设$j=K v[i]+
阅读全文
1

浙公网安备 33010602011771号