DP问题(3) : hdu 1080】的更多相关文章

题目转自hdu 1080,题目传送门 题目大意: 不想翻译! 解题思路: 其实就是一道变异的求lcs(Longest common subsequence 最长公共子序列)的题 不过,它的依据是下面这张图: 所以,需要一个数组来存规则: ][]={ {,-,-,-,-}, {-,,-,-,-}, {-,-,,-,-}, {-,-,-,,-}, {-,-,-,-,} }; 同时,需要把每个字母对应成一个数字 处理字母对应代码如下: int get_init(char s) { ; ; ; ; ;…
匹配两个人相似度. A,G,C.T.每两个都会有一个相应的值,给出两串基因.长度能够不一样,能够在基因中间加_使两串长度一样.然后有一个相应值.求最大相应值. 先做出相应的表 DP方程: x=dp[i-1][j-1]+hash[str_a[i-1]][str_b[j-1]]; y=dp[i-1][j]+hash[str_a[i-1]]['-']; z=dp[i][j-1]+hash[str_b[j-1]]['-']; p[i][j]=Max(x,y,z); #include "stdio.h&q…
题意: 输入俩个字符串,怎样变换使其所有字符对和最大.(字符只有'A','C','G','T','-') 其中每对字符对应的值如下: 怎样配使和最大呢. 比如: A G T G A T G -  G T T A -  G 和为 (-3)+5+5+(-2)+5+(-1) +5=14. 题解: 最长公共子序列的变形. 设dp[i][j]为a的前i个和b的前j个字符能构成的最大和. score[][]为每对字符的值,比如score['A']['G']为'A','G'这对字符对应的值. string a…
题意: 人类基因由A.C.G.T组成. 有一张5*5的基因表.每格有一个值,叫相似度.例:A-C:-3.意思是如果A和C配对, 则它俩的相似度是-3[P.S.:-和-没有相似度,即-和-不能配对] 现在给两条基因片段.(长度不一定相等) 现在你要在两条基因片段中插入若干个-(空白基因),使得两个基因片段长度相等,且得到的整体相似度的值最大.[再次P.S.:-和-不能配对] 思路: 因为-和-不能匹配,所以插入的-的个数是有限的. str1的第一个基因可以与str1的第一个或-配对.然后,,,,很…
http://acm.hdu.edu.cn/showproblem.php?pid=1080 二维最长公共子序列 #include <iostream> #include <cstdio> #include <cstring> using namespace std ; ],s2[]; ][]={{,-,-,-,-}, {-,,-,-,-}, {-,-,,-,-}, {-,-,-,,-}, {-,-,-,-}}; //dp[i][j]表示长i和j的字符串的最长公共子序列…
[HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #include<cstring> using namespace std; int a[20]; __int64 dp[20][11]; void digit_dp() { memset(dp, 0LL, sizeof(dp)); dp[0][0]=1; for(int i=1; i<20; ++i)…
题目转自hdu 1421,题目传送门 题目大意: 给你n个物品,你要搬走2*k个(也就是搬k次) 每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量) 要求所有v相加得数最少 不难看出,这就像是01背包 这道题很水但我还是调了0.25h 感谢wsy大佬的帮助 解题思路: emmm...... 首先,这肯定是一个n*k的dp 其中,i表示有i个物品,j表示需要搬j回 那么我们可以得出它的转移方程: dp[i][j]=min(dp[i-][j],dp[i-][…
题目转自hdu 2577,题目传送门 题目大意: 现给你n个区分大小写的字符串,大小写可用Caps Lock和shift切换(学过计算机的都知道) 但是有一点需要注意(shift是切换,若现在是大写锁定,用shift可切换成小写) 解题思路: 这道题一开始拿的时候,就觉得是n2的dp 但是,转移方程一直没想出来(0.25h) 后来又仔细想想,发现是2n的dp 然后想了想,20min就切了 我们先将字符串做预处理,形成一个01字符串 像这个测试数据: HELlowORLd 可以转换成这样: 然后,…
Road Trip Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 29, Accepted users: 29 Problem 12882 : No special judgement Problem description You are planning a road trip to visit your friends, each of whom live in…
最长公共子序列的变形 题目大意:给出两个基因序列,求这两个序列的最大相似度. 题目中的表格给出了两两脱氧核苷酸的相似度. 状态转移方程为: dp[i][j] = max(dp[i-1][j]+Similarity(s1[i], '-'),                     dp[i][j-1]+Similarity(s2[j], '-'),                     dp[i-1][j-1]+Similarity(s1[i], s2[j])); 注意边界的初始化. //#de…