dna

NOI 2.6 动态规划 9270:Pku2440 DNA

匿名 (未验证) 提交于 2019-12-03 00:22:01
题目来源: http://noi.openjudge.cn/ch0206/9270/ 9270:Pku2440 DNA 总时间限制 单个测试点时间限制 内存限制 描述 输入 The input contains several test cases.For each test case it contains a positive integer L (1 <= L <= 10 ^ 6).The end of input is indicated by end-of-file. 输出 For each test case, output K mod 2005,here K is the number of lives that will not be affected. 样例输入 4 样例输出 9 ----------------------------------------------------- 解题思路 对L 做动态规划。用4个int分别表示以00/01/10/11结尾的长度为i的DNA序列,找到i和i+1之间的递推关系即可。 ----------------------------------------------------- 代码 //9270:Pku2440 DNA //总时间限制: 4000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB

第三届蓝桥杯决赛试题:DNA比对

匿名 (未验证) 提交于 2019-12-03 00:19:01
DNA比对 脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子。它由 4 种主要的脱氧核苷酸(dAMP、dGMP、dCMT和dTMP)通过磷酸二酯键连接而成。这 4 种核苷酸可以分别记为:A、G、C、T。 DNA携带的遗传信息可以用形如:AGGTCGACTCCA.... 的串来表示。DNA在转录复制的过程中可能会发生随机的偏差,这才最终造就了生物的多样性。 为了简化问题,我们假设,DNA在复制的时候可能出现的偏差是(理论上,对每个碱基被复制时,都可能出现偏差): 1. 漏掉某个脱氧核苷酸。例如把 AGGT 复制成为:AGT 2. 错码,例如把 AGGT 复制成了:AGCT 3. 重码,例如把 AGGT 复制成了:AAGGT 如果某DNA串a,最少要经过 n 次出错,才能变为DNA串b,则称这两个DNA串的距离为 n。 例如:AGGTCATATTCC 与 CGGTCATATTC 的距离为 2 你的任务是:编写程序,找到两个DNA串的距离。 【输入、输出格式要求】 用户先输入整数n(n< 100 ),表示接下来有 2 n行数据。 接下来输入的 2 n行每 2 行表示一组要比对的DNA。(每行数据长度< 10000 ) 程序则输出n行,表示这n组DNA的距离。 例如:用户输入: 3 AGCTAAGGCCTT AGCTAAGGCCT AGCTAAGGCCTT

PCR | RT-PCR 的原理及应用

匿名 (未验证) 提交于 2019-12-02 23:38:02
生物的东西必须要主动去了解,否则视野容易受到限制,尤其是分子生物学的核心技术。 The Complete Guide to PCR (How it Works, Primer Design, and Running Reactions) 目的:从DNA双链中扩增出感兴趣的区段,用于后续的研究。 原理:DNA结构,双螺旋,AT、GC配对;DNA双链在临界温度会解链,退火后又会恢复;引物,DNA复制的起点,之所以需要引物是因为在DNA合成中DNA聚合酶只能把新的核苷酸加到已有的DNA链上。 操作核心: wiki上很全面 1. 引物设计,会考虑GC含量,决定退火温度; 2. 变性、退火和延伸; PCR Applications―Top Seven Categories Gene expression Genotyping (detection) Cloning Mutagenesis Methylation analysis Sequencing Medical, forensic, and applied sciences 问题: 1.真核生物的组蛋白会影响PCR吗? 2.为什么需要前后引物,前后引物是如何p出指定区段的? 逆转录PCR,就是PCR的一个常规应用,我也跑过,见过庞大的机器,也是先设计引物,然后提cDNA,定量。 一条RNA链被逆转录成为互补DNA

字符串Hash

匿名 (未验证) 提交于 2019-12-02 23:34:01
那么 hash (s+s[1]) = hash(s)*P +4; 很久很久以前,森林里住着一群兔子。 有一天,兔子们想要研究自己的 DNA 序列。 我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母)。 然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。 注意两个兔子一模一样只可能是他们的 DNA 序列一模一样。 输入格式 第一行输入一个 DNA 字符串 S。 第二行一个数字 m,表示 m 次询问。 输出格式 对于每次询问,输出一行表示结果。 如果两只兔子完全相同输出 Yes,否则输出 No(注意大小写)。 数据范围 1≤length(S),m≤10000001≤length(S),m≤1000000 输入样例: aabbaabb 3 1 3 5 7 1 3 6 8 1 2 1 2 输出样例: Yes No Yes #include <iostream> #include <cstdio> #include <cstring> using namespace std ; typedef long long LL ; const int MAX = 1000010 ; typedef unsigned long long ULL ; char s[MAX] ; ULL f

BJFU_数据结构习题_256病毒感染监测

瘦欲@ 提交于 2019-12-02 11:20:25
256病毒感染监测 描述 医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知它们的DNA序列都是环状的。现在研究者收集了大量的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒。为方便研究,研究者将人的DNA和病毒的DNA均表示成由一些小写字母组成的字符串,然后检测某种病毒的DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了病毒,否则没有感染。注意:人的DNA序列是线性的,而病毒的DNA序列是环状的。 输入 多组数据,每组数据有一行,为序列A和B,A对应病毒的DNA序列,B对应人的DNA序列。A和B都为“0”时输入结束。 输出 对于每组数据输出一行,若患者感染了病毒输出“YES”,否则输出“NO”。 输入样例 1 abbab abbabaab baa cacdvcabacsd abc def 0 0 输出样例 1 YES YES NO 来源: https://blog.csdn.net/weixin_43722827/article/details/102755675

[LeetCode] 187. Repeated DNA Sequences

大憨熊 提交于 2019-12-01 14:06:26
重复的DNA序列。给的input是一个DNA序列,请输出所有出现多次的DNA子序列。这题有位运算的做法但是个人觉得用hashset的做法更方便。 思路是用两个hashset,一个存子序列是否出现过(seen),另一个存最后的输出(res)。当某个子序列在seen中已经有了,就存入res;最后输出res里面所有的子序列。 时间O(n) - n是input字符串长度 空间O(n) - 用了两个hashset 1 /** 2 * @param {string} s 3 * @return {string[]} 4 */ 5 var findRepeatedDnaSequences = function(s) { 6 let seen = new Set(); 7 let res = new Set(); 8 for (let i = 0; i < s.length - 9; i++) { 9 const str = s.substring(i, i + 10); 10 if (seen.has(str)) { 11 res.add(str); 12 } else { 13 seen.add(str); 14 } 15 } 16 return Array.from(res); 17 }; 来源: https://www.cnblogs.com/aaronliu1991/p/11689679

递归生成10bpDNA

喜你入骨 提交于 2019-12-01 13:26:23
前面 运用递归生成10bp所有可能的DNA序列,即由 A,T,G,C 组成的所有长度为10的字符串。一个位置有4种可能,一共存在有 4^10 = 1048576 可能的字符串。 递归 递归之前已经写过可以查看 汉诺塔游戏的递归解析 。看了这篇文章,再来琢磨下能不能自己写出代码。能写出来,代表你理解了~。 代码 这里提供 Python 和 C 两个语言的代码。经过比较,C的代码比Python的快的很多~ Python import sys sys.setrecursionlimit(1048577) # Python默认允许的递归深度为1000,需要重新设置一下。 L = 10 base = ["A", "T", "G", "C"] dna_seq = ["N"] * 10 def DNA(handle, idx): idx += 1 for N in base: if idx < L: dna_seq[idx] = N DNA(handle, idx) else: seq = "".join(dna_seq) handle.write(seq) handle.write("\n") return 0 def main(): with open("DNA_10bp.txt", "w") as f: idx = -1 DNA(f, idx) main() C #include

acwing 138. 兔子与兔子

烂漫一生 提交于 2019-12-01 02:40:24
题面: 很久很久以前,森林里住着一群兔子。 有一天,兔子们想要研究自己的 DNA 序列。 我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母)。 然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。 注意两个兔子一模一样只可能是他们的 DNA 序列一模一样。 输入格式 第一行输入一个 DNA 字符串 S。 第二行一个数字 m,表示 m 次询问。 接下来 m 行,每行四个数字 l 1 , r 1 , l 2 , r 2 l1,r1,l2,r2,分别表示此次询问的两个区间,注意字符串的位置从1开始编号。 输出格式 对于每次询问,输出一行表示结果。 如果两只兔子完全相同输出 Yes,否则输出 No(注意大小写)。 数据范围 1 ≤ l e n g t h ( S ) , m ≤ 1000000 1≤length(S),m≤1000000 输入样例: aabbaabb 3 1 3 5 7 1 3 6 8 1 2 1 2 输出样例: Yes No Yes题解: 字符串哈希,最著名的就是BKDRHash,也就是将字符串变成数值,并且最后变成的数值是一个P进制的数,一般来说P最好为素数. 然后我们之所以需要前缀和,是因为我们这道题目是求一个区间的字符串,又因为是哈希表

基因组学技术新进展与展望

末鹿安然 提交于 2019-11-30 19:37:12
基因组学技术新进展与展望 于军 任鲁风 王绪敏 (中国科学院北京基因组研究所) 近十年来,由“下一代测序(next generation sequencing; NGS)”技术引领的基因组科学与技术正在一个空前的高速度推动下迅猛发展。这个发展势头的加速度之高,其研究成果在生物医学以及其他各生物相关领域应用和推广的渗透力之强,其对科学总体发展和社会进步的影响之大,使我们不得不刮目相看,必须要阖目冥思。首先,就中国生命科学与技术的发展而言,在过去的40年里,我们既没有掌握以DNA测序为核心的基因组核心技术,也没在相关仪器、试剂与耗材的研发方面取得任何突破性进展,更没有建立具有权威性、实用性、永久性和用户友好的相关数据库和知识库体系,所以任何技术源头的控制、高技术含量的仪器禁运和数据传运光缆的故障等都会大面积地、深刻地影响到中国生命科学的发展进程,至少在科学源头创新和发展速度上一定如此。其次,尽管在过去的十年里中国科学家积极参与了数个国际化的基因组学研究计划(包括人类基因组计划、人类基因组单倍体型图计划、千人基因组计划等),但是我国基因组学研究整体仍处在“拿着别人造的枪,装着买来的弹,打着别人打剩下的鸟”的基本局面。尤其在仪器和设备研发上,还处在“一无所有”的初级阶段。尽管各中原由诸多,且十分错综,我们仍应实事求是,回顾历程,分析现状,为未来的发展找到务实性的道路。

Leetcode之Repeated DNA Sequences

早过忘川 提交于 2019-11-30 13:21:05
题目: All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA. Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule. Example: Input: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" Output: ["AAAAACCCCC", "CCCCCAAAAA"] 代码: 方法一——map: class Solution { public: vector<string> findRepeatedDnaSequences(string s) { int len = s.length(); map<string, int> m; vector<string> res; for (int i = 0; i < len - 9; i++) {