随笔分类 - 动态规划
摘要:POJ飞翔.数据弱 ZQOJ飞翔 数据强 Description 司令部的将军们打算在N×M的网格地图上部署他们的炮兵部队。一个N×M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵
阅读全文
摘要:题意很简单,n头牛,m个位置,每头牛有各自喜欢的位置,问安排这n头牛使得每头牛都在各自喜欢的位置有几种安排方法。 2000MS代码: #include <cstdio> #include <cstring> int dp[(1<<20)+2]; int one[(1 << 20) + 2]; //用
阅读全文
摘要:大意:一个人要送n份货,给出一个矩阵,表示任意两个点间的直接路径长度,求从起点0送完这n份货(到达指定的n个地点)再回到起点0的最短时间。经过任意顶点的次数不限。 分析:既然是可以过多个点,那我们可以想到先用FD算法求出两两顶点的最短路, dp[i][j]表示在状态i的条件下到点j的最短时间,显然如
阅读全文
摘要:Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地。FJ打算在牧场上的某几格土地里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当的贫瘠,不能用来放牧。并且,奶牛们喜欢独占一块草地的
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1565 对于每一个数,取或者不取,用0表示不取,1表示取,那么对于每一行的状态,就可以用一个二进制的数来表示。比如5的二进制为101,就表示取第一个数,不取第二个数,取第三个数。 将符合要求的状态保存下来,什么是符
阅读全文
摘要:状态压缩动态规划(简称状压dp)是另一类非常典型的动态规划,通常使用在NP问题的小规模求解中,虽然是指数级别的复杂度,但速度比搜索快,其思想非常值得借鉴。 为了更好的理解状压dp,首先介绍位运算相关的知识。 1.’&’符号,x&y,会将两个十进制数在二进制下进行与运算,然后返回其十进制下的值。例如3
阅读全文
摘要:http://codeforces.com/contest/987/problem/C 题意:给你两个n的序列要你根据第一个序列(严格单调递增的方式)在第二个序列里找3个数加起来,输出最小的一个。 思路:先从前往后枚举两个最小的。在从后往前找一个加上使其最小,最后遍历剩下的三元组。 AC代码: #i
阅读全文
摘要:Description 求最长上升子序列。 求最长上升子序列。 Input 单测试用例。 第一行是一个正整数n,0 < n ≤ 3000 第二行是n个非负整数。 单测试用例。 第一行是一个正整数n,0 < n ≤ 3000 第二行是n个非负整数。 Output 两行结果。 第一行是最长上升子序列的长
阅读全文
摘要:Description 给出一个m×n的矩阵,请输出它的最大子矩阵和。 给出一个m×n的矩阵,请输出它的最大子矩阵和。 Input 多测试用例,每个测试用例: 第一行是两个正整数m和n,表示该矩阵的行数和列数。1 < m, n < 400 接下来m行,每行n个整数,空格分隔。 多测试用例,每个测试用
阅读全文
摘要:Description 给出n个整数序列(可能为负数)组成的序列a1, a2, ..., an,求该序列形如的子段和的最大值。当所有整数均为负数时,定义最大子段和为0。 给出n个整数序列(可能为负数)组成的序列a1, a2, ..., an,求该序列形如的子段和的最大值。当所有整数均为负数时,定义最
阅读全文
摘要:Description 背包体积为C,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取Mi件(Mi > 1),要么数量无限,在所装物品总体积不超过C的前提下所装物品的价值的和的最大值是多少? 背包体积为C,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品
阅读全文
摘要:(1)二进制的优化 这是一个多重背包的模板,也是十分好用的一种模板,因为这个比直接拆除01 背包来做 要省些时间。这是为啥呢,首先先由我讲一下为什么能换成01 背包吧。 举个例子。假如给了我们 价值为 2,但是数量却是10 的物品,我们应该把10给拆开,要知道二进制可是能够表示任何数的,所以10 就
阅读全文

浙公网安备 33010602011771号