自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 HOJ 1856 More is better(并查集,离散化)

并查集,离散化题目意思:n对朋友(n <= 100000),每个人都有一个编号(编号最大值10000000)。问:要求最后挑选出的人之间都是朋友关系,可以说直接的,也可以是间接地。问最多可以挑选出几个人(最少挑一个)。    在基础的并查集上加个数组记录集合的数量。本题要点:1、人的编号 很大(编号最大值10000000),需要离散化。2、sum[i] 表示以i为根的集合,该集合有多少数。每一对朋友,合并。最后,扫描所有的 sum[i], 找出最大值即可。#include <c

2020-07-31 22:06:33 89

原创 HOJ 3635 Dragon Balls(并查集)

并查集题目意思:T a b 表示把a龙珠所在的城里的所有龙珠运到b所在的城里Q a 表示对a的询问,要求输出 a所在的城, a所在的城里一共有多少个龙珠, a经过几次到达现在所在的城的。(移动的次数)本题要点:1、主要是记录移动次数:其实每个根结点都是最多移动一次的,所以记录移动次数把自己的加上父亲结点的就是移动总数了#include <cstdio>#include <cstring>#include <iostream>using namespa

2020-07-31 17:05:17 86

原创 POJ 3134 Power Calculus(深搜,迭代加深,估价函数)

深搜,迭代加深,估价函数题目意思:经过若干次乘法和除法运算,由 x 得到 x^n 。问最少的运算次数。本题要点:1、迭代加深:用 递归深度 depth来控制 DFS 的深度。2、估价函数:最快的速度倍增,都无法达到n,则剪枝。#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;const int MaxN

2020-07-31 15:18:04 216

原创 HOJ 1213 How Many Tables(并查集,裸题)

并查集,裸题题目意思:有n个人,有m组(每组两个人), 互相认识的人坐在一起。 问一个要有多少张桌子。本题要点:1、并查集:认识的两个人,合并 merge2、统计桌子数:扫描所有的 人, 如果 fa[i] == i, 说明需要一张桌子。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MaxN = 1010;int fa[MaxN

2020-07-31 15:11:09 113

原创 POJ 2225 Asteroids!(三维广搜)

简单的三维 广搜题目意思:给定一个三维空间,有些点能走有些点不能走,每次只能上下,左右,前后六个方向走,给定起始坐标和终点坐标,求从起点到终点最短的路径。本题要点:1、图是按z,y,x给出的,所以在获取起点和终点时也是按z,y,x获取2、三维的 BFS, 有6个方向可以走(前后左右上下), 每次走一步,判断是否越界。3、vis[MaxN][MaxN][MaxN] 表示某点是否被访问过4、 结构体 node 的step,存放的是走的步数。5、 最后,用队列模拟 bfs即可。#include

2020-07-31 11:21:29 370

原创 POJ 2251 Dungeon Master(三维广搜)

简单的三维 广搜题目意思:三维空间中,给出 起点 S 和终点 E, 每个位置 是 ‘.’ 则可以通过, 位置是 '#'表示障碍物。要求 ,从起点 S到 终点E ,最少的走多少步。本题要点:1、三维的 BFS, 有6个方向可以走(前后左右上下), 每次走一步,判断是否越界。2、vis[MaxN][MaxN][MaxN] 表示某点是否被访问过3、 结构体 node 的step,存放的是走的步数。4、 最后,用队列模拟 bfs即可。#include <cstdio>#include

2020-07-31 11:16:16 104

原创 HOJ 2553 N皇后问题(深搜)

深搜,8皇后问题本题要点:1、打表:n皇后问题的数量,放在 ans 数组, 输出 ans[n]2、检查 皇后放在 第r行,第c列位置:此时,第0 ~ r - 1 行的皇后已经确定。检查 0 ~ r - 1 行 的皇后是否和 (r, c)发生冲突。3、DFSfor(n = 0; n <= 10; ++n), 对于每一个n, 一行一行地放皇后,最后统计有多少种放法。#include <cstdio>#include <cstring>#include <

2020-07-31 11:07:20 88

原创 POJ 1606 Jugs(广搜,路径输出)

广搜,路径输出题目意思:给出两个壶的容量A和B, 一个目标水量C,对A、B可以有3种操作,求最少经过几步操作能够在某个壶中得到目标水量C。输入A、B和C,输入最少操作数和操作过程。 题目 和 poj 3414 一样。本题要点:1、状态表示:把A和B壶中水量作为状态,初始状态为<0,0>,每个操作都是状态变化的过程。因为有2个壶,所以总共有6种操作。vis[i][j] 表示第一个水杯装i, 第二个水杯装j 的状态是否出现过。2、用广搜,搜索可能出现的状态, 如果 存在某个状态,a水

2020-07-29 17:59:48 136

原创 POJ 3414 Pots(广搜,路径输出,经典)

广搜, 参考 https://blog.csdn.net/tigerisland45/article/details/52208174题目意思:给出两个壶的容量A和B, 一个目标水量C,对A、B可以有3种操作,求最少经过几步操作能够在某个壶中得到目标水量C。输入A、B和C,输入最少操作数和操作过程。本题要点:1、状态表示:把A和B壶中水量作为状态,初始状态为<0,0>,每个操作都是状态变化的过程。因为有2个壶,所以总共有6种操作。vis[i][j] 表示第一个水杯装i, 第二个水杯

2020-07-29 11:21:34 190

原创 POJ 3984 迷宫问题(深度优先搜索)

深度优先搜索本题要点:1、题目要求记录路径上的每一点的坐标,这里用 vector 来存。vector<pair<int, int> > ans 记录最优的方案,vector<pair<int, int> > tmp, 记录每一个可行的方案;2、dfs函数:递归边界: if(x == 4 && y == 4),将当前的坐标 (x, y) 放到tmp中往4个方向搜将当前的坐标 (x, y) 从tmp弹出来#include &lt

2020-07-28 22:21:16 127

原创 POJ 2029 Get Many Persimmon Trees(二维树状数组,模板题)

二维树状数组,模板题题目意思:国王所在的领地有WH个点,当中n个点处有树, 如今领地上最多同意圈(当然能够少于)大小为ST的矩形,问最多可圈中多少棵树?本题要点:1、 维护二维的树状数组, 在坐标 (x, y) 处有一颗树,那么 update函数,只需要 c[x][y]++ 即可。2、 统计每一个大小为 S * T 的矩形的时候,遍历所有的可能的 S * T 大小的矩形,for(int i = S; i <= w; ++i){ for(int j = T; j <= h; ++

2020-07-28 22:13:21 131

原创 POJ 1611 The Suspects(并查集,记录集合总数)

并查集本题要点:1、sum[i] 表示以i点为父节点的集合总数, 初始化的时候,每个点以自身为父节点,sum[i] = 1;在合并操作的时候,fa[fay] =fax;sum[fax] += sum[fay];#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>using namespace std;const int MaxN = 30010

2020-07-28 16:57:05 92

原创 POJ 3494 Largest Submatrix of All 1’s(单调栈)

单调栈题目意思:有一个 0 和 1 数字构成的矩阵,要求全是数字1构成的子矩阵的最大面积。题目类似于 POJ 2559。本题要点:1、算法竞赛进阶指南,54页,单调栈算法,依次扫描每一行即可。2、用数组 h[i][j]记录每一行的某一列对应大高度。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MaxN = 2010;int h[

2020-07-24 17:31:31 78

原创 POJ 2536 Gopher II(二分图最大匹配,裸题)

二分图匹配,裸题本题要点:1、二分图匹配:左部点是n个老鼠,右部点是m个鼠洞。当老鼠i和洞j之间的距离超过 s*v 的时候,i和j之间不存在边。用增光路算法算出最大匹配数 ans。 ans表示可以生存的老鼠, n - ans 表示被吃掉的老鼠。2、多 case#include <cstdio>#include <cstring>#include <iostream>#include <cmath>using namespace std;c

2020-07-22 15:21:15 130

原创 洛谷 P1725 琪露诺(单调队列,DP)

单调队列本题要点:1、转态表示:f[i]表示在i点能获得的最大冰点值2、状态转移方程:f[i] = ice[i] + max{f[j]}(i - r <= j <= i - l)3、 对于当前的i, f[i的状态由区间 [i - r, i - l] 的状态转移过来。用一个单调队列 ,记录区间 [i - r, i - l] 的状态的最大值。(记录下标即可)。队列的值是单调递减的。#include <cstdio>#include <cstring>#i

2020-07-17 14:52:09 170

原创 HOJ 3466 Proud Merchants(01背包,贪心)

01背包,贪心题目意思:给出可以使用的钱数和商品数量,每个商品购买时需要手中还有的钱数q[i],问可以获得的最大价值。本题要点:1、贪心: 因为买每件商品的条件是当前的钱,比 q[i]大(q[i] >= p[i]),而不仅仅比该商品的 价格 p[i] 大。因此,商品的出现顺序,会对最后的结果又影响。而普通 01 背包,物品的顺序对最后结果没有影响。如果有两个物品,A:p1,q1 B: p2,q2,若先买A,则至少需要p1+q2的钱,而先买B则至少需要p2+q1,如果p1+q2>p2+

2020-07-17 00:28:44 111

原创 POJ 1811 Prime Test(pollard_rho 算法,裸题)

pollard_rho 算法的裸题题目意思:给出一个数n,如果n是素数,输出 Prime, 否则输出n的最小素因子本题要点:1、pollard_rho 算法求出 n的所有素因子。输出最小的即可。#include <cstdio>#include <ctime>#include <cstring>#include <cstdlib>#include <iostream>#include <cstdlib>#inclu

2020-07-16 17:22:35 161 1

原创 POJ 2429 GCD & LCM Inverse (挑战程序设计竞赛,Miller_Rabin算法, pollard_rho 算法)

挑战程序设计竞赛, 135页,素数测试, 大数因数分解题目意思:给出两个数 , gcd 和 lcm 分别表示 a和b的最大公约数和最小公倍数。求a和b. 如果有多组,输出 a + b 最小的一组。本题要点:1、Miller_Rabin算法:https://www.cnblogs.com/fzl194/p/9046117.html2、pollard_rho 算法:https://www.cnblogs.com/fzl194/p/9047710.html3、 对 b / a 做因式分解后,在有

2020-07-16 17:18:53 138 1

原创 POJ 2387 Til the Cows Come Home(最短路径,dijkstra算法, 裸题)

最短路径,dijkstra算法题目意思:有n个地点,编号从1 到 n, 题目给出m条边。要求从点n到点1 的最短路径。裸的 最短路径,dijkstra算法。本题要点:1、用邻接表来存图,双向边。2、dijkstra 算法,用堆来优化。#include <cstdio>#include <cstring>#include <iostream>#include <queue>using namespace std;const int Max

2020-07-14 23:32:51 180

原创 洛谷 P1313 计算系数(算法竞赛进阶指南,快速幂,组合数,乘法逆元)

算法竞赛进阶指南,171 页,快速幂,组合数,乘法逆元本题要点:1、通过二项式定理,求出 x^n * y^m 项的系数是 C[n][k] * a^n * b^m.2、幂 的计算 a^n 直接使用快速幂计算, 假设得到结果是 ans;3、组合数 C[n][k] 的计算:先计算 k! , 再计算阶乘 n! * (k - n)! 模p的逆元。 p是素数,那么欧拉定理有: t^(p - 1)=1(mod p), 也就是t 模p的逆元是 t^(p - 2)。因此 n! * (k - n)! 模p的逆元

2020-07-14 21:16:21 168

原创 洛谷 P4316 绿豆蛙的归宿(算法竞赛进阶指南,概率数学期望, 拓扑排序)

算法竞赛进阶指南,182 页,概率数学期望本题要点:1、dis[x] 表示点x到终点所有经过的路径的期望长度。如果从点x出发有k条边,分别到达 y[1], y[2], …, y[k], 边长分别是 z[1], z[2], …, z[k]那么dis[x] = 1 / k * sum{dis[y[1]] + z[1], dis[y[2]] + z[2], …, dis[y[k]] + z[k]}显然 dis[n] = 0;2、建立原来图的反向图,求反图的拓扑排序,顺便计算每一点的 dis[i]。#

2020-07-14 21:04:30 190

原创 POJ 2142 The Balance(扩展欧几里得, 函数单调)

扩展欧几里得题目意思:给出重量为a和b的砝码,数量无限。要求用天平称出 重量c。 a, b, c都是整数, a != b.也就是求方程 a * x + b * y = c 的整数解。要求 |x| + |y| 值最小。如果 |x| + |y| 值相同,那么 |a * x| + |b * y| 值最小。本题要点:1、扩展欧几里得:求出 x0 和 y0 是方程 a * x + b * y = c一组解, 那么方程的通解是 x = x0 + b1 * k, y = y0 - a1 * k,其中,a1

2020-07-14 16:51:28 137

原创 POJ 3692 Kindergarten(挑战程序设计竞赛,二分图最大团)

挑战程序设计竞赛,283页,二分图最大团题目意思:幼儿园,所有女生相互之间认识,所有男生之间相互认识,有些女生和某些男生认识。现在,老师想挑选一些孩子玩游戏,这需要所有玩家彼此认识。您将帮助查找老师可以挑选的最大孩子数。本题要点:1、二分图的图:二分图的子图中,左部的任意一个节点和右部所有的节点都有连线,该子图称为二分图的 团。点数最多的团,称为二分图的最大团。2、二分图G 的补图 G1, G的最大团等于其补图G1的最大独立集。3、二分图的最大独立集 = 二分图的总点数 - 二分图的最大

2020-07-14 14:41:15 132

原创 POJ 1466 Girls and Boys (挑战程序设计竞赛,二分图最大独立集)

挑战程序设计竞赛,283页,二分图最大独立集二分图的最大独立集题目意思:在一群男女生之间存在浪漫关系,且只存在于男女之间,现给出存在关系的人的编号,但没给具体的男女性别,现在要求一个集合,在集合中任意两人都不存浪漫关系,输出集合中元素的个数.本题要点:1、定理:二分图的最大独立集 = 总点数 - 最大匹配数2、这里采用邻接表来存图。用增广路算法求出最大匹配数。二分图匹配,因为没有分左右每对匹配会出现两次。 最后算出来的 ans 要除以2;#include <cstdio>#

2020-07-14 12:22:23 108

原创 POJ 1469 COURSES(二分图最大匹配,裸题)

题目意思:p门课,n个学生,每一门课都有若干学生可以当代表。当然,每一个学生最多只能是一门课的代表。问:能否为每一门课都选出一个学生当代表。本题要点:1、二分图最大匹配:左部节点:课程的编号;右部节点:学生的编号;用邻接矩阵存放 图,使用增光路算法求出最大匹配数。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MaxN = 310

2020-07-13 23:41:49 251

原创 POJ 1274 The Perfect Stall(挑战程序设计竞赛,二分图最大匹配,裸题)

题目意思:n头牛(编号1 ~ n),m个牛栏(编号 1 ~ m).每头牛只会在特定的牛栏产奶。当然,每一个牛栏只能装进一头牛。题目要求:怎样安排每头牛到特定的牛栏,使得牛产奶数最多。本题要点:1、二分图最大匹配:左部节点:牛的编号;右部节点:牛栏的编号;用邻接矩阵存放 图,使用增光路算法求出最大匹配数。#include <cstdio>#include <cstring>#include <iostream>using namespace std;

2020-07-13 23:13:57 165

原创 POJ 1325 Machine Schedule(算法竞赛进阶指南,二分图最小点覆盖)

算法竞赛进阶指南,434页,二分图最小点覆盖题目意思:有两台机器A和B,分别有n种和m种不同的模式,有k个工作,每个工作都可以在那两个机器的某种特定的模式下处理。如job0既可以在A机器的3好模式下处理,也可以在B机器的4号模式下处理。机器的工作模式改变只能通过人工来重启。通过改变工作的顺序,和分配每个工作给合适的机器可以减少重启机器的次数达到最小。任务就是计算那个最小的次数。初始时两台机器都运行在0号模式下本题要点:1、二分图最小点覆盖问题:每个作业 i 可以以机器A 的 a[i]模式运行

2020-07-13 21:55:35 162 1

原创 POJ 2226 Muddy Fields(算法竞赛进阶指南,二分图最小点覆盖)

算法竞赛进阶指南,434页,二分图最小点覆盖题目意思:在 n * m 的网格,有些格子泥泞,有些干净的,现在用宽度为1, 长度随意的木板覆盖泥泞点,但不能覆盖任何的干净点。木板可以重叠,问最少需要多少块木板。本题要点:1、首先木板覆盖的只能是单个的泥泞点, 或者是连续的若干个泥泞点。木板不能覆盖 干净点。依次扫描每一行,碰到连续的若干个泥泞点,就用一块木板覆盖该点。每一块木板编上编号,从1 开始, 这些编号叫做 行泥泞块。同理,依次扫描每一列,得到 列泥泞块。以 行泥泞块 块为左部节点, 列

2020-07-13 21:41:03 103

原创 HOJ 2069 Coin Change(动态规划)

题目意思:有5种硬币, 币值分别是 1, 5, 10, 25, 50。题目给出 数n,求出由这5种硬币组成币值n, 有多少种选法。本题要点:1、状态表示:dp[i][j]表示用j个硬币实现i金额的方案数2、状态转移方程:for(int k = type[i]; k < MONEY; ++k) //5种硬币{dp[k][j] += dp[k - type[i]][j - 1];}#include <cstdio>#include <cstring>#in

2020-07-05 16:10:55 124

原创 POJ 1717 Dominoes(背包)

题目意思:多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|。例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2。每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置。编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小。本题要点:1、转态表示:dp[i][j] 表示 处理前i个多米诺骨牌, 使得其上和 减下和的 差值为j的最少翻转次数。因为差值 j可

2020-07-05 16:04:06 134

原创 POJ 1948 Triangular Pastures(背包,经典)

题目意思:给出n条边,然后用这n条边组成一个三角形,求该该三角形的最大面积。本题要点:1、转态表示:dp[i][j] 表示三角形第一条边是i, 第二条边是j的 三角形是否存在。(i >= j)3、 转态转移:if(dp[i][j]) // 扫描第k条边的时候{dp[i + a[k]][j] = dp[i][j + a[k]] = 1; }4、 三条边能组成三角形的充要条件是:任意两条边的和大于第三条边。假设所有线段的总和是 s,这些线段组成的三角形的最长边是 m = s

2020-07-05 15:48:22 131

原创 POJ 3624 Charm Bracelet(01背包,裸题)

题目意思:有N个物品,分别有不同的重量Wi和价值Di,Bessie只能带走重量不超过M的物品,要是总价值最大,并输出总价值。本题要点:1、裸的 01背包题目。参考代码 :《算法竞赛进阶指南》 276页。开一维数组 dp2、状态表示:dp[j] 表示 背包中放入总体积为j的物品的最大价值。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const in

2020-07-05 15:34:59 125

原创 POJ 3628 Bookshelf 2(搜索)

题目意思:其实很简单啦就是给你n个高度,让你挑其中的几个摞起来。要求摞起来以后的总高度超过b,问你这样的高度的最小值是多少。本题要点:1、暴搜:首先,n最大值是20, 很小,可以暴搜, 复杂度 O(2^20)2、 dfs(int x, int sum) x 表示当前处理到的下标(1 ~ x - 1 都处理完了)。sum 表示 已经当前已经累加的高度。每次 dfs, 可以选择这个身高 w[x], dfs(x + 1, sum + w[x]);也可以不选择 dfs(x + 1, sum);

2020-07-05 15:29:20 113

原创 POJ 1276 Cash Machine(分组背包,经典)

题目意思:给出金钱数和N种不同的钱币数量和面额,求出这n种面额能够凑出的不大于给出金钱数的最大值本题要点:1、多重背包,二进制拆分法:(参考 《算法竞赛进阶指南》 280页)币值为 money[i], 数量为 cnt[i] 的硬币,拆分为 2^0, 2^1, 2^2, …, 2^p , r (r = cnt[i] - 2^0 - 2^1 - 2^2 - … - 2^p)组硬币, 每组硬币的 体积为 2^k (0 <= k <= p),价值是 money[i] * 2^k 。这种方法

2020-07-05 15:21:19 156

原创 POJ 1384 Piggy-Bank(完全背包,裸题)

题目意思:给你一个储蓄罐空的,和满的重量,然后给出各种硬币的价值和对应的重量,要你估计出储蓄罐里面硬币价值和最小为多少,注意要保证重量和恰好为给出满的重量。本题要点:1、完全背包的裸题:背包容量,就是储蓄罐中硬币的重量(满罐 - 空罐);物品的体积,就是硬币的重量;物品的价值,就是硬币的面值。2、dp[i] 表示体积为i的背包,能装的物品最小价值之和转态转移:dp[j] = min(dp[j], dp[j - v[i]] + w[i]); // 能装下 v[i]时候,取较小值#incl

2020-07-05 14:55:09 214

原创 POJ 2063 Investment(完全背包,模板题)

题目意思:给你一笔金额,你要将这比金额去投资,现在有t种股票,每种股票都有一个价值和年收益,问你如何投资在n年后的最大收益并且股票的价值都是1000的倍数,所以后面优化,对每个价值除以1000测试数据:1 //有多少组测试数据10000 4 //10000代表初始金额,4代表4年之后的最大收益2 //有两种股票4000 400 //接下来2行,每行分别代表每种股票的价值与年收益3000 250本题要点:1、完全背包,套用模板:每笔投资的买入价相当于物品的体积 v[i],

2020-07-05 14:46:45 155

原创 洛谷P1541 乌龟棋(算法竞赛进阶指南,线性dp)

算法竞赛进阶指南,347页,线性dp本题要点:1、状态表示:f[a][b][c][d]:表示你出了a张爬行牌1,b张爬行牌2,c张爬行牌3,d张爬行牌4时的得分2、转态转移方程:假设牌1, 牌2,牌3,牌4分别出现了 a, b, c, d次。当前的坐标是x。 有x往回走1步,对应的最大得分是 f[a - 1][b][c][d],同理, 有x往回走2步,对应的最大得分是 f[a][b - 1][c][d],有x往回走3步,对应的最大得分是 f[a][b][c - 1][d],有x往回走3步,

2020-07-03 00:36:36 177

原创 CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)

算法竞赛进阶指南,278页,完全背包本题要点:1、把完全背包的代码改改即可。常规的完全背包:有n个物品,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值(每个物品可以选任意多次)。f[j]表示到小为i的背包,最多能获得的最大价值f[j] = max(f[j], f[j - v[i]] + w[i]); // j从小到大扫描2、题目意思转换:有n个物品,每个物品的体积是v[i], 价值是1, 求装到大小为m的大背包,一共有多少种装法。f[j]表示到小为i的

2020-07-02 22:48:18 176

原创 CH5101 LCIS(算法竞赛进阶指南,线性dp)

算法竞赛进阶指南,266页,线性dp本题要点:1、转态表示f[i][j], 表示在 a[1] ~ a[i] 范围内,b[1] ~ b[j] 范围内,以b[j]结尾的LCIS 的长度2、转态转移方程a[i] != b[j], f[i][j] = f[i - 1][j];a[i] == b[j], f[i][j] = 1 + max{f[i - 1][k], 0 <= k < j}#include <cstdio>#include <cstring>#in

2020-07-02 20:34:54 141

原创 CH 5201 数字组合(算法竞赛进阶指南,01背包)

算法竞赛进阶指南,277页,01背包本题要点:1、把01背包的代码改改即可。常规的01背包:有n个背包,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值。f[j]表示到小为i的背包,最多能获得的最大价值f[j] = max(f[j], f[j - v[i]] + w[i]);2、题目意思转换:有n个背包,每个物品的体积是v[i], 价值是1, 求装到大小为m的大背包,一共有多少种装法。f[j]表示到小为i的背包, 一共有多少种装法:f[j] = f[j

2020-07-02 20:32:54 265

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除