HDU 1080 Human Gene Functions 基礎dp
dp黑洞再次憑一己之力寫對了一道dp水題,這個題很簡單,跟最長公共子序列一樣。
#include<iostream> #include<cstdio> #include<string.h> #include<algorithm> #include<cmath> using namespace std; int t,f[105][105],len1,len2; char s1[105],s2[105]; int get(char ch) { if (ch=='A') return 1; if (ch=='C') return 2; if (ch=='G') return 3; if (ch=='T') return 4; return 5; } int find(char a,char b) { int x=get(a); int y=get(b); if (x==y) return 5; else if (x*y==2 || x*y==4 || x*y==20) return -1; else if (x*y==3 || x*y==8 || x*y==12 || x*y==15) return -2; else if (x*y==5 || x*y==6) return -3; else if (x*y==10) return -4; } int main() { scanf("%d",&t); while (t--) { scanf("%d",&len1); for (int i=1; i<=len1; i++) { cin>>s1[i]; } scanf("%d",&len2); for (int i=1; i<=len2; i++) { cin>>s2[i]; } memset(f,0,sizeof(f)); for (int i=1; i<=len1; i++) { f[i][0]=f[i-1][0]+find('-',s1[i]); } for (int i=1; i<=len2; i++) { f[0][i]=f[0][i-1]+find('-',s2[i]); } for (int i=1; i<=len1; i++) { for (int j=1; j<=len2; j++) { f[i][j]=max(f[i-1][j]+find(s1[i],'-'),f[i][j-1]+find(s2[j],'-')); f[i][j]=max(f[i][j],f[i-1][j-1]+find(s1[i],s2[j])); //cout<<"i="<<i<<" j="<<j<<endl; //cout<<"f1="<<f[i-1][j]+find(s1[i],'-')<<" f2="<<f[i][j-1]+find(s2[j],'-')<<" f3="<<f[i-1][j-1]+find(s1[i],s2[j])<<endl; } } printf("%d\n",f[len1][len2]); } return 0; }
相關推薦
HDU 1080 Human Gene Functions 基礎dp
dp黑洞再次憑一己之力寫對了一道dp水題,這個題很簡單,跟最長公共子序列一樣。 #include<iostream> #include<cstdio> #include<string.h> #include<algorithm>
POJ-1080 Human Gene Functions---類似LCS
序列 define 相似度 -s get 思路 () sin algorithm 題目鏈接: https://cn.vjudge.net/problem/POJ-1080 題目大意: 給定兩組序列,要你求出它們的最大相似度,每個字母與其他字母或自身和空格對應都有一個打分,求
Human Gene Functions POJ 1080 最長公共子序列變形
cee diff print bmi ces -s compare %d determine Description It is well known that a human gene can be considered as a sequence, consisting
nyoj246 Human Gene Functions dp
最長子序列變形,用dp[i][j]表示長度為i時的str1和長度為j的時str2的最大匹配值。 故dp[0][0]為0,但如果只有i或j為一個0時不一定為0,因為兩個序列的長度必須相等所以此時需要通過新增'-'實現。 當i,j都不為0時有三種情況:1.i用'-'填補。2.j用
POJ1080 Human Gene Functions【最長公共子序列變形】
C++程式: #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<map> using n
HDU 1024 Max Sum Plus Plus(基礎dp)
always cut panel face make return algo pan nbsp Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K
HDU Problem F [ 數塔問題 ]——基礎dp模板題
Problem FTime Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 6 Accepted Submission(s)
HDU 1159 【基礎DP 最長公共子序列】
TAT,,,覺得自己不算太理解,但是居然可以憑著記憶做出來。。蠻拼的 #include <cstdio> #include <cstring> #include <iostream> #include <string> usi
hdu 4719 Oh My Holy FFF(dp線段樹優化)
origin end should adding href ast left code padding Oh My Holy FFF Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65535/65535
hdu 4901 The Romantic Hero 計數dp,位計算
height accep fin -a can stop ott from include The Romantic Hero Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072
HDU 4616 Game(經典樹形dp+最大權值和鏈)
using bsp mes size hdu pen typedef style 最大的 http://acm.hdu.edu.cn/showproblem.php?pid=4616 題意:給出一棵樹,每個頂點有權值,還有存在陷阱,現在從任意一個頂點出發,並且每個頂點只能
hdu 1078 FatMouse and Cheese【dp】
mark .text ani addclass data dcl process con word 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1078 題意:每次僅僅能走 橫著或豎著的 1~k 個格
HDU 2089 不要62(數位DP)
註意 break 大小 printf bre 表示 += 理解 ini 題意:求[n,m]內所有數字中不出現4也不出現連續62的數的個數。 輸入:n m,多組數據,以0 0結尾。 輸出:符合條件的數的個數。 限制:(0<n≤m<1000000) 時間:1000
HDU 1074 Doing Homework 狀態壓縮DP
output -- max 方式 sch adl struct work small 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 題目大意:小明打完比賽回來補作業,N個作業每個作業有 名字,截止日期,完成所需時間
HDU 1257 最少攔截系統 簡單DP
容易 target ++ font put 題目 ssi pre 路徑 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 題目大意:求有多少個單調非遞增序列。 解題思路:經典題的變形----LIS。可以按照題意,多次dp
HDU 6148 Valley Numer(數位DP)
ima for oca ace end string map type http 1 #include <iostream> 2 #include <queue> 3 #include <stack> 4 #incl
HDU 4405 Aeroplane chess(概率dp)
i++ 題意 clu esp ostream con mat 計算 stdin http://acm.hdu.edu.cn/showproblem.php?pid=4405 題意: 有個屌絲喜歡玩飛行棋,現在棋盤就編號為0~n,起點為0,終點為n,只要最後大於等於n就可
HDU - 1024 Max Sum Plus Plus(dp+滾動數組優化)
std scanf strong mes stat 方程 color ati algo 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 題意:給定n個數字,求其中m段的最大值(段與段之間不用連續,但是一段中要連續)
HDU 6146 Pokémon GO DP,計數
-i namespace -1 space def bits const com highlight 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6146 題意:~ 解法:原題。。http://blog.csdn.net/y
HDU 5542 The Battle of Chibi dp+樹狀數組
mod sizeof tac pro sum cpp case name problem 題目:http://acm.hdu.edu.cn/showproblem.php?pid=5542 題意:給你n個數,求其中上升子序列長度為m的個數 可以考慮用dp[i][j]表示