反恐训练营

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;
}

最新文章

  1. Linux线程体传递参数的方法详解
  2. 黑马程序员:Java编程_IO流
  3. 大家一起写mvc(二)
  4. 有了Hadoop MapReduce, 为什么还要Spark?
  5. ECharts SSH+JQueryAjax+Json+JSP将数据库中数据填充到ECharts中
  6. js原生removeclass方法
  7. 传阿里整合资源,进军O2O市场
  8. HDU 4411 Arrest
  9. python文件处理及装饰器
  10. mysqldump --flush-logs
  11. jquery核心功能分析
  12. Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解
  13. js的事件冒泡,事件捕获
  14. [转]用C#在windows上操控电脑自带蓝牙(入道指南)
  15. iOS运行时使用(动态添加方法)
  16. YARN 启动后失败退出——没有请求资源——Invalid resource request, no resources request
  17. 【NIFI】 Apache NiFI 之 ExecuteScript处理(二)
  18. emmc基础技术8:操作模式3-interrupt mode
  19. Luogu 3369 / BZOJ 3224 - 普通平衡树 - [替罪羊树]
  20. 转:在eclipse中 使用7.0及以上手机进行测试时logcat不打印日志的解决办法

热门文章

  1. javascript创建对象的方法--构造函数模式
  2. 1.lombok系列1:初识lombok
  3. 关于大数据项目创建时所需setting.xml(博主推荐)
  4. 相对路径 System.Web HttpServerUtilityBase Server.MapPath(&quot;~/&quot;)
  5. slice深拷贝数组
  6. 洛谷 P1130 红牌
  7. A glance on VDBI
  8. XAMPP各个版本配置
  9. 109.vprintf vfprintf vscanf vfscanf
  10. Flume Channels官网剖析(博主推荐)