随笔分类 - 算法竞赛-动态规划
摘要:题目大意: 给出n个点的坐标,求至少画多少掉直线才能连接所有点。 题目思路:状态压缩 首先经行预处理,求出所有状态下,那些点不在该状态内 以任意两点为端点求出这条直线的状态 枚举所有状态,找出不在当前状态下的两点,以这两点所形成的直线经行更新dp。 其中dp[i]表示在i状态下的最优解。 #incl
阅读全文
摘要:题目大意: 给出n*n的矩阵Map,Map[i][j]代表第i个男人和第j个女人之间的满意度,求男女一一配对后,最大的满意度之和。 题目思路:状态压缩 题目可看做每行取一点,所有点不同列的情况下,各个点的最大和为多少。 dp[i][j],代表第i行,状态为j的情况下的最优解,其中j的含义为:j所代表
阅读全文
摘要:dp[i][j] 表示第一个字符串前i位 和 第二个字符串前j位的最长公共子序列
阅读全文
摘要:题目思路:状态转移方程很好推出,值得注意的是要分别判断是否能从一个平台的某侧移动到另一平台,也就是说要判断过一个平台的左端点或右端点做垂线,看这条垂线是否经过其他平台。 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<
阅读全文
摘要:题目大意:求区间[l,r]之间的数字的二进制形式中0的个数大于等于1 的数字的个数。 题目思路:比较特殊二进制的第一位必须是1,所有需要一个记录一下第一位是否被填过。剩下的就是一般的数位DP了 #include<iostream> #include<algorithm> #include<cstri
阅读全文
摘要:数位DP,一开始读错题意了,以为13可以不连续……,比较水的数位DP。
阅读全文
摘要:题目思路: dp[][0]存放不含不吉利数字的个数 dp[][1]存放上一位为6且不含不吉利数字的个数 dp[][2]存放含不吉利数字的个数 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<vecto
阅读全文
摘要:数位dp,但是很奇怪的是我在虚拟oj上用GUC C++提交会wa,用Visual c++提交正确,但是加上注释后提交又莫名CE……好任性啊 0 ,0 题目思路:看代码吧 注释很详细 #include<iostream>#include<algorithm>#include<cstring>#incl
阅读全文
摘要:多重背包优化01背包
阅读全文
摘要:动态规划水题
阅读全文
摘要:和平常的完全背包不一样的是多了一个限制条件:最多只砍S只怪,所以我们应该多一重循环来q:for 1->S,代表某种怪砍q只。
阅读全文
摘要:背包问题 + 二进制优化
阅读全文
摘要:由直线分割平面推广到折线分割平面
阅读全文
摘要:分别从四个角向对角打dp表,然后遍历各个点认为该点为相遇的房间,依据该点求四个dp式的和,并找出最大值
阅读全文
摘要:动态规划 (经典好题,很锻炼思维)
阅读全文
摘要:动态规划 记录路径的最长上升子序列变形
阅读全文
摘要:题目大意:有个小偷要求抢银行(坏蛋),现在给出你一个安全的值p(即危险系数不高于P则认为是安全的),和银行数目N。下面N行每行两个数字:抢劫该银行能获得的钱数和抢劫该银行的危险系数。 求在不高于P的情况下最多能抢多少钱(坏人)。 题目大意:基本上是01背包的模板了,和之前一道 I NEED A OF
阅读全文