DP
文章平均质量分 54
Get *null
这个作者很懒,什么都没留下…
展开
-
DP问题各种模型的状态转移方程
转自:http://www.cnblogs.com/10jschen/archive/2012/08/19/2646087.html1(最长公共子串(注意和最长公共子序列区别))两个字符串str1和str2,长度分别为(l1,l2)dp[i][j]表示以两个字符串分别以第i和第j个字符结尾所能达到的公共子序列的长度,由于下面涉及到i-1和j-1,那么这个时候我们一般从i=1转载 2015-11-12 22:44:58 · 748 阅读 · 0 评论 -
CSUST 第九届校赛J-炮兵阵地(第二类斯特林数)
第二类斯特林数:将n个不同的物体分到m堆里(堆没有区别),有递推式f(n,m)=m*f(n-1,m)+f(n-1,m-1) #include#includeusing namespace std;const int mod=1e9+7;int dp[1000][1000];int main(){ int t,n,m; scanf("%d",&t); w原创 2016-04-13 22:40:07 · 521 阅读 · 0 评论 -
CSUST 第九届校赛C-编辑距离(DP)
C.编辑距离 Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others) Description 俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出了编辑距离概念。编辑距离,又称 Levenshtein 距离,是指两个字符串之间,由一个转成另一个原创 2016-04-12 22:05:07 · 484 阅读 · 0 评论 -
蓝桥杯 K好数(DP)
算法训练 K好数 时间限制:1.0s 内存限制:256.0MB 问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007原创 2016-02-22 18:51:40 · 2709 阅读 · 1 评论 -
蓝桥杯 数字三角形(简单DP)
算法训练 数字三角形 时间限制:1.0s 内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; .原创 2016-02-06 21:04:16 · 1454 阅读 · 1 评论 -
HDU 2191 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活(多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191#include#include#includeusing namespace std;int dp[10005];int v,n;void ZeroOnePack(int cost,int weight){ for(int j=v; j>=cost; j--)原创 2016-01-03 14:58:17 · 630 阅读 · 0 评论 -
HDU 1114 Piggy-Bank(完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114#include#include#includeusing namespace std;#define INF 0x3f3f3f3fint main(){ int t,dp[10005]; scanf("%d",&t); while(t--) {原创 2016-01-03 14:54:16 · 382 阅读 · 0 评论 -
HDU 2602 Bone Collector(01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602过几天详细把三道背包问题解题过程记录一下。#include#include#include#includeusing namespace std;int main(){ int t; scanf("%d",&t); while(t--) {原创 2016-01-03 14:50:37 · 257 阅读 · 0 评论 -
走格子(数学组合/动态规划)
一个高中就学过的问题:现有一个m * n的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子? 可以用高中学过的排列组合来解,见下图一个6*6的格子,从A走到B: 要从A到B,必须向左走6步,向下也走6步,一共12步,我们可以从向下走入手,向下走的方法即从12步里选出6步向下,一共有C(12,6)种,因此从A到B的路线共有组合数C原创 2015-12-29 18:04:29 · 23069 阅读 · 5 评论 -
HDU1159 Common Subsequence(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159#include#include#include#includeusing namespace std;int dp[1000][1000];char a[1000],b[1000];int main(){ while(~scanf("%s%s",a,b)) {原创 2015-12-29 15:01:29 · 395 阅读 · 0 评论 -
HDU1003 Max Sum
Max SumTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 194034 Accepted Submission(s): 45254Problem DescriptionGiven a sequence a[1],a[2原创 2015-12-28 22:48:42 · 340 阅读 · 0 评论 -
蓝桥杯 01背包
算法提高 01背包 时间限制:1.0s 内存限制:256.0MB 问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个.输入格式 输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。 以后N行每行两个数Wi和Vi,表示物品的重量和价原创 2016-01-22 23:22:06 · 1178 阅读 · 0 评论