反恐训练营

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事件”以后,国际恐怖势力更是有恃无恐,制造了多起骇人听闻的恐怖事件。基于此,各国都十分操心恐怖势力会对本国社会造成的不稳定,于是纷纷在本国的军队、警察队伍中开展了反恐训练。作为反恐立场坚定的大国,中国也十分重视在人民解放军、武装警察部队、人民警察队伍中反恐训练。还专门成立了反恐特警队。



炜炜是反恐特警队的一名新队员。如今正在接受培训。这几天刚好是射击训练第二阶段——实弹应变训练的日子,此前的第一阶段里。炜炜经过努力,已经将自己训练成为一个百发百中的神抢手了!这次,他将背着国产最新型12.7mm重型狙击枪进行训练比赛。

这次训练比赛的规则是这种:



1、每一个队员从出发点開始。沿着一条唯一的笔直道路跑直到终点,途中不同意往回跑,否则将被取消比赛资格。

2、出发前。每一个队员的枪膛内都被装了顺序一样的、用小写英文字母标明类型的子弹序列。每位队员被告知这一序列的信息;同一时候,每位队员也被告知恐怖分子即将出现的序列和类型(相同用小写英文字母标明类型)。

3、在跑动的过程中。若发现“恐怖分子”,特警队员能够选择用枪击毙他。来得到写在“恐怖分子”胸前的得分,可是前提是他使用的子弹类型必须和“恐怖分子”类型同样,否则,即使击毙了“恐怖分子”,也得不到分数;当然选择不击毙他也是能够的。这样他不会从那个“恐怖分子”身上得到分数。

4、同意特警队员放空枪。这样能够消耗掉型号不正确的子弹而不至于杀死“恐怖分子”(当然每一个特警队员都不会愚蠢到不装消音装置就放空枪,以至于吓跑“恐怖分子”)。等待枪口出现正确型号的子弹击毙他得分。

这里。我们假定:

1、对于每一个队员,途中出现恐怖分子的地点、时间、类型也是全然一样的。

2、每颗子弹都是质量合格的,都能够发挥杀伤效力

3、因为队员各个都是神枪手,一旦他选择了正确的子弹,向目标射击,目标100%被爆头

4、每一个队员的记忆力超强,能记住全部子弹序列信息和恐怖分子序列信息。

5、每一个队员体力足够好,能跑全然程,并做他想要做的

6、“恐怖分子”是不动的。小范围内不存在多于一个的恐怖分子。



炜炜须要你的帮助。告诉他怎样做,才干得到最高的分数。如今假设告诉你出发时枪膛内子弹的序号和型号、恐怖分子出现的序号和类型,你能告诉炜炜他最多能得到多少分数吗?

 
Input
输入数据的第一行有一个整数N表示子弹和恐怖分子的类型数。随后的一行是各种恐怖分子类型的一行字母。两个字母之间没有不论什么字符。接下来的一行是击毙上一行相应位置恐怖分子类型的得分数,每一个分数之间恰有一个空格。

第三第四行分别表示開始时枪膛内子弹的序列(左边的先打出)和恐怖分子出现的序列(左边的先出现)。字母之间都没有不论什么字符。

每一个測试数据之间没有空格和空行。

你的程序必须通过所有測试数据。才干被判为AC。

 
Output
对于每个測试数据。输出炜炜最多能得到的分数。
 
Sample Input
3
abc
1 1 1
abc
ccc
3
abc
1 1 1
ccc
aba
 
Sample Output
1
0
 

还是求最长公共子序列。可是每次遇到同样的字母后。该加上字母相应的分数

#include<stdio.h>
#include<map>
#include<string>
#include<vector>
#include<iostream>
using namespace std;
int N;
int main(int argc, char *argv[])
{
vector<vector<int> >c;
map<int,char>m;
string s,a,b;
int score;
while(~scanf("%d",&N))
{
cin>>s;
for(int i=0;i!=s.size();++i)
{
scanf("%d",&score);
m[s[i]]=score;
}
cin>>a;
cin>>b;
int x=a.size();
int y=b.size();
int SIZE=x>y?x:y;
SIZE+=1;
c.resize(SIZE);
for(int i=0;i<c.size();++i)
{
c[i].resize(SIZE);
}
for(int i=0;i<x;++i)
c[i][0]=0;
for(int j=0;j<y;++j)
c[0][j]=0;
for(int i=1;i<=x;++i)
for(int j=1;j<=y;++j)
{
if(a[i-1]==b[j-1])
{
c[i][j]=c[i-1][j-1]+m[a[i-1]];
}
else if(c[i][j-1]>=c[i-1][j])
{
c[i][j]=c[i][j-1];
}
else
c[i][j]=c[i-1][j];
}
printf("%d\n",c[x][y]);
}
return 0;
}

HDU 1243 反恐训练营 (动态规划求最长公共子序列)的更多相关文章

  1. hdu 1243 反恐训练营 最长公共字序列

    此题的题意很明确,就是求最长公共子序列: #include<iostream> #include<algorithm> #include<cstdio> #incl ...

  2. HDU 1159 Common Subsequence (动态规划、最长公共子序列)

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. HDU - 1243 - 反恐训练营

    先上题目: 反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  4. HDU 1243 反恐训练营(最长公共序列)

    反恐训练营 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  5. 动态规划求最长公共子序列(Longest Common Subsequence, LCS)

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  6. hdu 1243 反恐训练营(dp 最大公共子序列变形)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1243 d[i][j] 代表第i 个字符与第 j 个字符的最大的得分.,, 最大公共子序列变形 #inclu ...

  7. hdu 1503:Advanced Fruits(动态规划 DP & 最长公共子序列(LCS)问题升级版)

    Advanced Fruits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. Coincidence (动态规划求最长公共子序列)(王道)

    题目描述: Find a longest common subsequence of two strings. 输入: First and second line of each input case ...

  9. HDU 4681 string 求最长公共子序列的简单DP+暴力枚举

    先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...

随机推荐

  1. JS实现文件另存为

    JS实现文件另存为 //下载平面图 function downPlan() { var oPop = window.open(src, "", "width=1, hei ...

  2. 无阻塞加载外部js(动态脚本元素,XMLHttpRequest注入,LazyLoad)

    动态脚本元素即在js中去创建<script>标签加载外部js并执行,这样加载的好处是文件的下载和执行过程不会阻塞页面的其他进程.通过下面两个例子对比出效果 <!DOCTYPE htm ...

  3. Appium_pytest fixture的使用

    一.定义fixture方法 # -*- coding:utf-8 -*-import pytestfrom baseutil.DriverUtil import DriverConfig @pytes ...

  4. vector转数组

    vector转数组 由于vector内部的数据是存放在连续的存储空间,vector转数组事实上只需要获取vector中第一个数据的地址和数据的长度即可.如果仅仅是传参,无需任何操作,直接传地址即可,如 ...

  5. 51 nod 1189 阶乘分数

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1189 题目思路: 1/n! = 1/x +1/y ==> ...

  6. log4j的总结

    概述 log4j是日志处理的框架,相当于.net中的log4net.因为之前在.net中学习过log4net.所以.在学习log4j上,感觉很的亲切.本篇博客主要是讲一个图,好了进入正题. log4j ...

  7. OpenShift 自定义 OPENSHIFT_DOCUMENT_ROOT 变量,替换网站根目录路径!

    OpenShift 自定义 OPENSHIFT_DOCUMENT_ROOT 变量,替换网站根目录路径! 预先定义的子目录 :)     DIY: DocumentRoot=${OPENSHIFT_RE ...

  8. 学习活动管理系统:LAMS

    学习活动管理系统:LAMS 一.总结 基于java的cms 二.LAMS Learning Activity Management System,学习活动管理系统. 数字化学习已经具有完整的发展方法来 ...

  9. Python 极简教程(四)变量与常量

    变量和常量 在 Python 中没有 常量 与 变量 之分.只有约定成俗的做法: 全大写字母的名称即为 常量: PI = 3.1415926 全小写字母的名称为 变量: name = 'nemo' 变 ...

  10. [selenium]-处理滚动条

    转载于:https://blog.csdn.net/lilongsy/article/details/76142497 1.先把driver 强制转换为js,如下 JavascriptExecutor ...