0%

P16231 [蓝桥杯 2026 省 A] 基因研究

题目大意

P16231 [蓝桥杯 2026 省 A] 基因研究

题目描述

DNA 分子的四种碱基分别记为 A、T、G、C。每个人的基因序列都可以认为是一个由 A、T、G、C 四种字符组成的长度为 nn 的字符串。

小蓝正在研究一种疾病。他观察到,这种疾病存在一个固定的易感序列(也可认为是一个由 A、T、G、C 构成的字符串)。若某人的基因序列中存在一个子串恰好等于这个易感序列,则称此人“易感”;若基因序列的任意子串都不等于这个易感序列,则称此人“不易感”。

小蓝希望根据这座城市中人们的基因序列情况,估计出城里“易感”人群所占的比例。

然而,直接获取整座城市中每个人完整的基因序列非常困难。为此,小蓝采用了抽样统计的方法:通过大量采样,他估计出了在这座城市中,每一个位置上碱基为 A、T、G、C 的人数占比。我们可以将其理解为:在所有人的基因序列中,第 ii 个位置为 A、T、G、C 的人数占比分别是多少。

为了简化模型,小蓝作出如下假设:对于任意一个人,其基因序列在每个位置上的碱基分布与采样结果完全一致,且不同位置之间的碱基相互独立。也就是说,即使已经确定了若干个位置上的碱基,剩余位置上的碱基仍然按照对应位置的分布独立生成。

现在,小蓝决定将这些概率以模 998244353998244353 的形式算出:如果“易感”人群所占比例为 pq\frac{p}{q},则小蓝希望得到一个整数 xx,满足 x×qp(mod998244353)x \times q \equiv p \pmod{998244353}。请你根据给定的易感序列,以及每个位置上四种碱基的概率分布,帮小蓝计算并输出这个整数 xx

输入格式

第一行包含两个正整数 n,mn, m,分别表示基因序列长度和易感序列长度。

第二行包含一个长度为 mm 的字符串 ss,仅由 A、T、G、C 构成,表示疾病对应的易感序列。

接下来 nn 行,每行包含四个非负整数 ai,ti,gi,cia_i, t_i, g_i, c_i。其中:

  • aia_i 表示第 ii 个位置碱基为 A 的概率(模 998244353998244353 意义下);

  • tit_i 表示第 ii 个位置碱基为 T 的概率(模 998244353998244353 意义下);

  • gig_i 表示第 ii 个位置碱基为 G 的概率(模 998244353998244353 意义下);

  • cic_i 表示第 ii 个位置碱基为 C 的概率(模 998244353998244353 意义下)。

保证对任意 ii,均有 (ai+ti+gi+ci)mod998244353=1(a_i + t_i + g_i + c_i) \bmod 998244353 = 1

输出格式

输出一行,包含一个非负整数,表示“基因序列中包含易感序列作为子串”的人群占比在模 998244353998244353 意义下的结果。

输入输出样例 #1

输入 #1

1
2
3
4
5
3 2
AA
499122177 499122177 0 0
499122177 0 499122177 0
499122177 0 0 499122177

输出 #1

1
623902721

说明/提示

【样例说明】

基因序列共有 33 个位置:

  • 11 位有 12\frac{1}{2} 的概率是 AA,有 12\frac{1}{2} 的概率是 TT

  • 22 位有 12\frac{1}{2} 的概率是 AA,有 12\frac{1}{2} 的概率是 GG

  • 33 位有 12\frac{1}{2} 的概率是 AA,有 12\frac{1}{2} 的概率是 CC

易感序列为 AAAA。因此,一个人被视为“易感”,当且仅当其基因序列中包含子串 AAAA

所有可能产生的基因序列中,满足条件的共有 3 种,分别是 AACAACTAATAAAAAAAA。这 3 种序列出现的概率均为 18\frac{1}{8},因此“易感”人群所占的总比例为 18+18+18=38\frac{1}{8} + \frac{1}{8} + \frac{1}{8} = \frac{3}{8},其在模 998244353998244353 意义下的结果为 623902721623902721

【评测用例规模与约定】

对于 30%30\% 的数据,1mn51 \le m \le n \le 5

另存在 20%20\% 的数据,ai=ti=gi=cia_i = t_i = g_i = c_i

对于 100%100\% 的数据,1mn3000,0ai,ti,gi,ci<9982443531 \le m \le n \le 3000, 0 \le a_i, t_i, g_i, c_i < 998244353

思路讲解

AC代码

心路历程(WA,TLE,MLE……)