hdu 1243 反恐训练营

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int dp[2048][2048];
int main()
{
    int i,j,n,s[500],t;
    char s1[2048],s2[2048],s3[2048];
    while(~scanf("%d",&n))
    {
        scanf("%s",s3);
        for(i=0;i<n;i++)
        {
            scanf("%d",&t);
            s[s3[i]-‘a‘]=t;
        }
        scanf("%s %s",s1,s2);
        int len1=strlen(s1);
        int len2=strlen(s2);
        int len=max(len1,len2);
        for(i=0;i<len;i++)
        {
            dp[0][i]=0;
            dp[i][0]=0;
        }
        for(i=0;i<len1;i++)
        {
            for(j=0;j<len2;j++)
            {

                if(s1[i]==s2[j])
                {
                    dp[i+1][j+1]=dp[i][j]+s[s1[i]-‘a‘];
                }
                else
                {
                    dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);
                }
            }
        }
        printf("%d\n",dp[len1][len2]);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-24 03:11:12

hdu 1243 反恐训练营的相关文章

HDU 1243 反恐训练营 (动态规划求最长公共子序列)

反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3040    Accepted Submission(s): 693 Problem Description 当今国际反恐形势很严峻,特别是美国"9.11事件"以后,国际恐怖势力更是有恃无恐,制造了多起骇人听闻的恐怖事件.基于此,各国都十分担心恐怖势力会对本国社会造

!HDU 1243 反恐训练营--dp--(最长公共子序列)

题意:给你一个子弹序列和恐怖分子序列,只有子弹打到对应序号的恐怖分子才能得分,每个恐怖分子有对应的分数,求最大的得分 分析:这题抽象出来的模型就是最长公共子序列,直接套公式:dp[i][j]表示用第i颗子弹打第j个恐怖分子时能得到的最大分数,注意这指的是从开始状态到这一状态这个过程的最优解,而不是这一状态的最优解:状态转移:1.当a[i]==b[j]时,dp[i][j]=dp[i-1][j-1]+v,v是恐怖分子b[j]的分数:2.否则,dp[i][j]=max(dp[i-1][j-1],dp[

【最长公共子序列】hdu 1243 反恐训练营

最长公共子序列: dp[i][j] :当前子弹的最大得分, if ([i-1]==[j-1]) dp[i][j]=dp[i-1][j-1]+score[a[i-1]]; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); 1 #include <cstdio> 2 #include <cstring> 3 4 const int MAXN=2000+5; 5 6 char t[MAXN],a[MAXN],b[MAXN]; 7 int dp[MAXN]

杭电acm 1243 反恐训练营 LCS

反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6183    Accepted Submission(s): 1592Problem Description 当今国际反恐形势很严峻,特别是美国"9.11事件"以后,国际恐怖势力更是有恃无恐,制造了多起骇人听闻的恐怖事件.基于此,各国都十分担心恐怖势力会对本国社会造成

【HDOJ】1243 反恐训练营

LCS. 1 /* 1243 */ 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 6 #define MAXN 2025 7 #define MAXM 256 8 9 char type[MAXM]; 10 int point[MAXM]; 11 12 char bullet[MAXN]; 13 char kbfz[MAXN]; 14 int dp[MAXN][MAXN]; 15 int

HDU1243:反恐训练营

题目链接:反恐训练营 题意:本质上是求最大公共子序列,然后加上一个权值 分析:见代码 //公共子序列问题 //dp[i][j]表示前s1的前i个与s的前j个匹配得到的最大公共子序列 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,value[200],dp[2005][2005],f[2005][2005] ; char s1[2005],s2[2005]

反恐训练营(LCS)

反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3450    Accepted Submission(s): 802 Problem Description 当 今国际反恐形势很严峻,特别是美国“9.11事件”以后,国际恐怖势力更是有恃无恐,制造了多起骇人听闻的恐怖事件.基于此,各国都十分担心恐怖势力会对 本国社会造成的不稳

HDU 1243 最长公共子序列

反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2850    Accepted Submission(s): 648 Problem Description 当今国际反恐形势很严峻,特别是美国“9.11事件”以后,国际恐怖势力更是有恃无恐,制造了多起骇人听闻的恐怖事件.基于此,各国都十分担心恐怖势力会对本国社会造成的不稳定,

hdu 1243(LCS变形)

反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4064    Accepted Submission(s): 967 Problem Description 当 今国际反恐形势很严峻,特别是美国“9.11事件”以后,国际恐怖势力更是有恃无恐,制造了多起骇人听闻的恐怖事件.基于此,各国都十分担心恐怖势力会对 本国社会造成的不稳