描述

How can millions of different and complex structures be built using only a few simple building blocks? Just ask your DNA. DNA (short for deoxyribonucleic acid) spells out the genetic codes of millions of species, using just four molecules: adenine (A), guanine (G), thymine (T), and cytosine (C). These molecules are called nucleotide bases. Different sequences of nucleotide bases are what define each species.
Within
this coil of DNA lies all the information needed to produce everything
in the human body. A strand of DNA may be millions, or billions, of
base-pairs long. Different segments of the DNA molecule code for
different characteristics in the body. A Gene is a relatively small
segment of DNA that codes for the synthesis of a specific protein. This
protein then will play a structural or functional role in the body. A
chromosome is a larger collection of DNA that contains many genes and
the support proteins needed to control these genes.


Now
, we give you the Sequence of some genes, which code for different
proteins. And then we give every protein a score.here comes your
problem,if we give you a chromosome in sequence , of course it can code
many proteins, can you arrange which proteins it code , with the object
to get The largest score (two proteins can not be overlap).

输入

There
will be several testcases. For each testcase, the first line is an
integer N(1 < N ≤ 100,000), the number of the genes we will give you.
Then followed N lines , each line contains a string S(the lenth of S is
no more than 10), the sequence of the gene , and an integer C, the
score of the protein the gene code. The last line of each testcase is a
string (the length of this string is no more than 1000), describes the
sequence of the chromosome.

输出

For each testcase , output the largest score in the sample’s format.

样例输入

4
AATG 3
AT 2
GCGG 3
GG 2
AATGCGG
3
A 1
C 1
G 1
T

样例输出

Case 1: 5
Case 2: 0

题目来源

HNU 2009

dp[i+l]=max(dp[i]+M[temp]),M[temp]表示某基因的score值。

大量输入输出使用scanf。

#include <stdio.h>
#include <string>
#include <map>
#include <iostream>
using namespace std; int main(int argc, char *argv[])
{
int t,c=;
int dp[];
while(scanf("%d",&t)!=EOF){
char gene[];
int score;
map< string,int > M;
memset(dp,,sizeof(dp));
for(int i=; i<=t; i++){
scanf("%s %d",gene,&score);
M[gene]=score;
}
string g;
cin>>g;
int len=g.size();
for(int i=; i<len; i++){
for(int l=; l<=; l++){
if(l+i>len)continue;
string temp=g.substr(i,l);
if(dp[i+l] < dp[i]+M[temp]){
dp[i+l]=dp[i]+M[temp];
}
}
}
int ans=-;
for(int i=; i<=len; i++){
if(dp[i]>ans)
ans=dp[i];
}
printf("Case %d: %d\n",++c,ans);
}
return ;
}

TOJ 2641 Gene的更多相关文章

  1. TOJ 2776 CD Making

    TOJ 2776题目链接http://acm.tju.edu.cn/toj/showp2776.html 这题其实就是考虑的周全性...  贡献了好几次WA, 后来想了半天才知道哪里有遗漏.最大的问题 ...

  2. KEGG and Gene Ontology Mapping in Bioinformatic Method

    使用KOBAS进行KEGG pathway和Gene Ontology分析 Article from Blog of Alfred-Feng http://blog.sina.com.cn/u/170 ...

  3. 合并基因表达水平(merge gene expression levels, FPKM)

    使用tophat和cufflinks计算RNA-seq数据的表达水平时,当一个基因在一个样本中有多个表达水平时需要合并它们的表达水平. This code is a solution to colla ...

  4. augustus, gene prediction, trainning

    做基因组注释 先用augustus训练,然后再用maker做基因注释 augustus提供一些训练好的,如果有和你的物种非常接近的,直接用提供的,没有的话再自己训练. 网址: http://bioin ...

  5. gene框架文档 - 路由类 gene_router

    路由类 Gene\Router 介绍 Gene\Router 是gene框架的核心类之一,本框架区别于其他常见框架的最大地方就是独特.强大.简单的路由定义等.路由强大灵活,支持回调.类方法:支持res ...

  6. gene框架文档 - 概述

    欢迎使用Gene框架 最新版本:V1.2.2 开源地址:https://github.com/sasou/php-gene 作者:sasou 文档地址:http://php-gene.com/doc ...

  7. Human Gene Functions

    Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18053 Accepted: 1004 ...

  8. POJ 1080 Human Gene Functions -- 动态规划(最长公共子序列)

    题目地址:http://poj.org/problem?id=1080 Description It is well known that a human gene can be considered ...

  9. poj1080--Human Gene Functions(dp:LCS变形)

    Human Gene Functions Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17206   Accepted:  ...

随机推荐

  1. C# 多线程操作实例

    1.多线程操作 一旦打开线程就必须记得关闭 1.第一部分 这是个数字叠加小功能 private void CountTo(int countTo, CancellationToken ct) { ; ...

  2. VSCode调试C#控制台与单元测试

    公司前端最近项目里面在用VSCode编写前端代码,觉得这个编辑器很轻便,既然是微软出的,肯定支持C#,就去网上查了查资料,发现还真是支持C#,并且蛮多地方用到dotnet命令,哈哈. 1.powers ...

  3. Thread Group(线程组)

    线程组,可以理解用户池,用来产生线程(用户),每一个线程代表一个用户,在使用JMeter进行性能测试过程中,经常需要模拟多个用户进行测试,可以通过设置线程数代表多少个用户,通常一个线程组就代表一个测试 ...

  4. 「BZOJ 2342」「SHOI 2011」双倍回文「Manacher」

    题意 记\(s_R\)为\(s\)翻转后的串,求一个串最长的形如\(ss_Rss_R\)的子串长度 题解 这有一个复杂度明显\(O(n)\)的做法,思路来自网上某篇博客 一个双倍回文串肯定当且仅当本身 ...

  5. 趣图:TCP 与 UDP 的差别

      趣图:程序猿和运维狗的工作日常…… 趣图:Java 和 PHP 之间的战斗

  6. [agc014d] Black and White Tree

    Description ​ 有一颗n个点的树,刚开始每个点都没有颜色. ​ Alice和Bob会轮流对这棵树的一个点涂色,Alice涂白,Bob涂黑,Alice先手. ​ 若最后存在一个白点,使得这个 ...

  7. 单据头->实体服务规则中根据单据类型设置可见性或必录等

  8. <转> django模板语言filter方法

    Django的模板是一个简单的文本文件,它可以生成任何文本格式(HTML.XML.CSV等),在本文开始之前先看一个Django模板的例子: 从这个例子中可以看到,模板标签可以是单独出现的,如exte ...

  9. php opcache 详解

    PHP性能提升之OPcache相关参数详解 工具 memory 发布于December 15, 2016 标签: PHP OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PH ...

  10. kotlin spring @value 注解

    spring boot和kotlin里静态类使用@Value注解配置解决方案前言spring boot里默认是不能给静态属性使用@Value赋值的.所以这里使用中间变量过渡绑定. 方案//applic ...