
刷题总结
wuhu,qifei
无
展开
-
数字转换(树形DP)
思路:就是利用试除法求出所有的约数之和,每一个约数之和对应一个数,把这个约数之和作为一个父节点,数作为子节点建立一个有向图,并且进行标记,没有被标记的就是树的头节点,因为不会只有一棵树,然后再对树进行逐一遍历。如果一个数 x 的约数之和 y(不包括他本身)比他本身小,那么 x 可以变成 y,y也可以变成 x。限定所有数字变换在不超过 n 的正整数范围内进行,求不断进行数字变换且不出现重复数字的最多变换步数。输出不断进行数字变换且不出现重复数字的最多变换步数。例如,4 可以变为 3,1 可以变为 7。原创 2023-01-09 21:21:07 · 199 阅读 · 0 评论 -
石子合并(区间DP)
每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。设有 NN 堆石子排成一排,其编号为 1,2,3,…,最后一次合并代价为 11,总代价为 4+7+11=22。问题是:找出一种合理的方法,使总的代价最小,输出最小代价。,再合并得到 11,总代价为 4+9+11=24;如果第二步是先合并 2,3堆,则代价为 7,得到。, 我们可以先合并 1、2堆,代价为 4,得到。, 又合并 1,2 堆,代价为 9,得到。原创 2023-01-05 21:29:33 · 135 阅读 · 0 评论 -
背包常见的题目以及变形
但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。给定一个背包的容量k,给定n个物品的体积和价值,物品不可分割,将n个物品中选若干个物品放入背包,求背包内物品的最大价值总和,在价值总和最大的前提下求背包内的最小物品个数c。输出背包内物品的最大价值v,在价值最大的前提下求背包内的最小物品个数c,中间用一个空格隔开。第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);max=最大总价值。原创 2023-01-02 17:17:28 · 192 阅读 · 0 评论 -
01背包问题的详细解析
这个是最简单的01背包问题:我们来看怎么分析这个题目:我们采用yls的闫式dp分析法来佐证。接下来有 N行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。有 N 件物品和一个容量是 V 的背包。第 i 件物品的体积是 vi,价值是 wi。先来看最简单的背包问题:01背包问题。废话不多说,直接上一个本题的代码。输出一个整数,表示最大价值。原创 2023-01-01 17:57:08 · 183 阅读 · 0 评论