1608: DNA序列---复制问题 - kmp
1608: DNA序列---复制问题
时间限制: 1 Sec 内存限制: 128 MB
提交: 10 解决: 5
[提交] [状态] [讨论版] [命题人:mfdy]
题目描述
核酸与蛋白质是生物体内两大重要的生物大分子,其中核酸是生物遗传信息从上一代传到下一代的的重要载体。核酸的基本组成单元是核苷酸,可将核苷酸分为脱氧核苷酸(DNA)和核糖核苷酸(RNA)。
我们以DNA为例,所有的DNA核苷酸的磷酸基团和糖基团都是一样的,但其化学组成的碱基基团有四种类型,腺嘌呤(A)、鸟嘌呤(G)、胞嘧啶(C)、胸腺嘧啶(T)。因此,对DNA序列的单链研究可以转化为研究由A、G、C、T四个字母组成的字符串。
DNA复制是指以原始的DNA分子为模板合成出相同分子的过程。在一些酶的作用下,DNA复制过程的有四种可能:完全复制、半保留复制、逆复制、逆半保留复制。
给定一个带有遗传信息的模板mode,你能在DNA序列s中找到这样的复制过程最多有多少次?
输入
第一行: T 表示以下有T组测试数据( 1 ≤ T ≤ 8)
每组数据, 占一行:
mode s (|mode |≤ 20, |s| ≤ 300 , mode与s之间至少一个空格)
输出
对每组测试数据,输出占一行
样例输入
2 ACGA AGACGACGAGCAGCAACGA AAA ACGATTAAAAAGTCTAAAA
样例输出
5 5
提示
1 半保留复制是指本次复制可以与前次复制部分重叠。例如:ACGACGA,算2次复制。类似逆半保留复制,例如:AGCAGCA,算2次复制。
2 若模板是回文串,逆复制过程不再统计。
思路:
kmp
题意好难懂= =,实际上就正向一次,反向一次
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
#include<stack>
#include<cmath>
#include<set>
#include<map>
#include<functional>
using namespace std;
#define ll long longtypedef pair<ll,int>P;
const int INF=0x3f3f3f3f;
const int N=105,mod=1e9+7;string mode,s;
int nex[305];bool judge(){int len=mode.length();for(int i=0;i<len/2;i++){if(mode[i]!=mode[len-i-1])return false;}return true;
}void getNext(){nex[0]=-1;nex[1]=0;int len=mode.length();for(int i=2;i<=len;i++){int k=nex[i-1];while(k>=0&&mode[k-1+1]!=mode[i-1])k=nex[k];nex[i]=k+1;}
}int kmp(){int res=0;int i=0,j=0,mlen=mode.length(),slen=s.length();while(i<slen&&j<mlen){if(j==-1||s[i]==mode[j]){i++;j++;}else j=nex[j];if(j==mlen){res++;j=nex[j];}}return res;
}int main(){int t;cin>>t;while(t--){cin>>mode>>s;int flag=judge();getNext();int ans1=kmp();int ans2=0;if(!flag){int len=s.length();reverse(s.begin(),s.end());ans2=kmp();}printf("%d\n",ans1+ans2);}
}
1608: DNA序列---复制问题 - kmp相关推荐
- 4169: DNA序列---复制问题
题目描述 核酸与蛋白质是生物体内两大重要的生物大分子,其中核酸是生物遗传信息从上一代传到下一代的的重要载体.核酸的基本组成单元是核苷酸,可将核苷酸分为脱氧核苷酸(DNA)和核糖核苷酸(RNA). ...
- 1610: DNA序列---变异问题 - 模拟
1610: DNA序列---变异问题 时间限制: 2 Sec 内存限制: 128 MB 提交: 18 解决: 3 [提交] [状态] [讨论版] [命题人:mfdy] 题目描述 遗传是子代保持亲代 ...
- Tensorflow 使用Bidirectional()包装器构建双向LSTM模型,预测DNA序列功能
循环神经网络(RNN) 循环神经网络RNN能处理时间序列,过去几年中,应用 RNN 在语音识别,语言建模,翻译,图片描述等问题上已经取得一定成功,并且这个列表还在增长.RNN模型的一个代表是LSTM ...
- C#,生信软件实践(01)——DNA序列数据库FASTA文件合并工具的源代码
1 生物信息学简介 生物信息学(BioInformatics)是研究生物信息的采集.处理.存储.传播,分析和解释等各方面的学科,也是随着生命科学和计算机科学的迅猛发展,生命科学和计算机科学相结合形成的 ...
- matlab提取DNA序列
班里一同学做毕业设计,要将从网下载的DNA序列文件进行提取,把里面的外显子提取并保存成单独文件,下载下来的文件就是一个网页的文本内容,她竟然就按上面的标示,一个一个查找,复制,新建,粘贴,重命名.女生 ...
- 求最小Hamming距离的DNA序列
提示:两个等长字符串的Hamming距离,等于两个字符串相同的位置中,字符不同的个数.(如ACGT和GCGA的Hamming距离为2) 问题: TATGATAC TAAGCTAC AAAGATCC T ...
- UA MATH567 高维统计III 随机矩阵12 整数环上的区间的应用:DNA序列突变点侦测的统计量及假设检验
UA MATH567 高维统计III 随机矩阵12 整数环上的区间的应用:拐点侦测的统计量及假设检验 整数环上的区间作为随机变量的下标 最大值的概率不等式 应用:DNA序列突变点侦测 整数环上的区间作 ...
- 21行代码AC——习题3-7 DNA序列(UVa-1368)_解题报告
励志用尽量少的代码做高效表达. 题目(提交)链接→UVa-1368 思路: DNA序列:按列遍历,记录每一列出现次数最多(若同样多,则字典序最小)的字母,录入s串累加. 距离:重新遍历,录入出现次数比 ...
- Leetcode 187.重复的DNA序列
重复的DNA序列 所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮 ...
最新文章
- 搭建rtx服务并客户端登录
- Linq To select
- java多线程notify_Java多线程 wait notify
- SAP Spartacus popover Component css 的重用设计
- 【Linux】编译C语言文件(-o -lpthread)
- 第三届IEEE普适媒体计算国际会议(U-Media 2010
- r语言plotmds_多元统计分析R语言建模| 11 多维标度法MDS
- php aes java_AES php java 互转
- bootstrap-面板
- 微星主板黑苹果_组装电脑哪个主板好?如何选择电脑主板?2020年电脑主板推荐及分析。...
- WIN7 IE10降级为IE9
- 小米集团招股说明书披露小米专利概况
- HTML5植物大战僵尸网页版游戏源码
- 无法在驱动器0分区上安装windows解决方法
- linux系统中各颜色的代表
- html外链视频,WordPress文章内容中插入外链视频的通用iframe方法
- Node.js 包管理器 ied
- linux cpan 参数配置,Linux下使用CPAN进行Perl模块的安装
- 教授专栏17 | 许佳龙:银行查找网安漏洞 提高公众风险意识
- 2023年西南交通大学马克思主义理论考研上岸前辈备考经验
热门文章
- java二维数组添加数据_我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊...
- MATLAB中CVX工具箱解决凸优化问题的基本知识——语法、变量声明、目标函数、约束条件、cvx编程错误及解决方法
- JAVA--多对多关系
- 做DSP最应该懂得157个问题
- gss1_GSS简介:网格样式表
- 计算机输入输出接口分类,以cpu为中心配上存储器输入输出接口电路及系统总线所组成的计算机称为什麽...
- python中的函数及面向对象的知识点
- audio驱动之codec和codec_dai
- Android 百度语音合成 (含离线、在线、API合成方式,详细步骤+源码)
- Gregorian Calendar ------ 有趣的日历