题目名称 | 2761. [Codeforces 828E] DNA进化 |
---|---|
输入输出 | DE.in/out |
难度等级 | ★★☆ |
时间限制 | 2000 ms (2 s) |
内存限制 | 512 MiB |
测试数据 | 10 |
题目来源 |
|
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:1, 提交:1, 通过率:100% | ||||
|
100 | 1.403 s | 184.96 MiB | C++ |
关于 DNA进化 的近10条评论(全部评论) |
---|
所有人都知道DNA链是由核苷酸组成的。有四种核苷酸:"A", "T", "G", "C"。一个DNA链是核苷酸的序列。科学家决定追踪一个稀有物种的进化,起初它们的DNA链是字符串s。
这个物种的进化被描述为DNA的一个变化序列。每一个变化都是一些核苷酸的改变,例如在DNA链“AAGC”中可以发生下列变化:第二个核苷酸可以变为“T”所以最终的DNA链是“ATGC”。
科学家知道DNA链的一些片段能被某些未知的感染源影响。他们能用一个核苷酸序列来代表感染源。科学家对是否有一些变化是由这些感染源引起的很感兴趣。因此他们有时想知道一些感染源对一些DNA片段的影响的值。这种值按如下计算:
把感染源表示为一个字符串e,并让科学家对DNA链中从l到r的片段感兴趣,包括端点。
字符串eee... 的前缀(也就是由无限多个重复的字符串e组成的字符串)被写在字符串s从l到r下面,包括端点。
这种影响的值是字符串s中与写在它下面的字母相同的字母的个数。
作为一个开发者,Innokenty对生物学也很感兴趣,所以科学家找他帮忙。 Innokenty在忙于为“VK杯”做准备,所以他决定把这个问题委托给参赛者。快来帮助科学家吧!
第一行是字符串s。它只包含大写英文字母"A", "T", "G" 和"C"。
下一行是一个整数q(1<=q<=10^5),代表研究事件的个数。
接下来是q行,每行描述一个研究事件,包含以下其中一个形式:
1 x c;x是一个整数
,c是"A", "T", "G" 或"C";意思是DNA中有一个变化:位置x的核苷酸现在是c。
2 l r e;l,r是整数
,e值由"A", "T", "G" 和"C"组成的一个字符串
,;意思是科学家对感染源e对于从l到r的DNA片段的影响的值感兴趣,包括端点。
对于科学家的每一次询问(第二种类型的事件)输出一个整数在一个单独的行中,代表感染源对DNA片段的影响的值。
ATGCATGC
4
2 1 8 ATGC
2 2 6 TTT
1 4 T
2 2 6 TA
8
2
4
GAGTTGTTAA
6
2 3 4 TATGGTG
1 1 T
1 6 G
2 5 9 AGTAATA
1 10 G
2 2 6 TTGT
0
3
1
CodeForces