luogu#P8011. 「Wdsr-3」蓬莱药局

「Wdsr-3」蓬莱药局

题目背景

八意永琳是居住在永远亭的医生。她有着精湛的医术以及大量的医学知识,因而可以制造出各种的药物。

尽管如此,八意永琳常常为新的药物进行试验(包括但不限于对铃仙下手)。不过,八意永琳也开始使用被称为「培养基」一类的东西,培养被称为「细菌」的微小妖怪作为实验材料了。

细菌的分裂能力很强。每一次分裂,细菌的数目都能翻倍。更有意思的是,产生的细菌的子代不一定与亲代相同。换言之,子代细菌会发生变异,从而为永琳的药物实验提供了大量的材料。当然了,细菌太多也是一件苦恼的事情;如果培养基里长满了四处活跃的细菌,那么永琳将不得不采取措施,消灭它们。

在执行一次新的培养之前,永琳希望对细菌上的基因进行一些研究;由于永琳忙着去制药,因此这个任务就交给你了。

题目描述

为了更方便地描述题意,我们先给出以下定义:

  • 子段:我们定义数组 BB 是数组 AAPP 位置开始的子段,当且仅当 A+P1B|A| + P - 1 \le |B|B1=AP,B2=AP+1,,BB=AP+B1B_1=A_P,B_2=A_{P+1},\dots,B_{|B|}=A_{P+{|B|}-1}
  • 作为子段的出现次数:我们定义数组 BB 在数组 AA 中作为子段的出现次数为:初始设次数为 00.枚举每个不同的 PP,若数组 BB 是数组 AAPP 位置开始的子段,则将次数加一.最后得到的值即为数组 BB 在数组 AA 中作为子段的出现次数.
  • 基因数组:每个细菌都有一个「基因数组」.它是一个值域为 [1,k][1,k] 的整数数组.
  • 目标数组:「目标数组」是一个值域为 [1,k][1,k] 的整数数组.在本题中,我们会给定 mm 个不同的「目标数组」,第 ii 个数组为 gig_i
  • 目标细菌:对于一个细菌,记它的「基因数组」为 XX.我们统计每个「目标数组」g1,g2,,gmg_1, g_2, \dots, g_m 分别在 XX 中「作为子段的出现次数」,并将它们求和.若得到的和为 奇数,则我们称这个细菌为一个「目标细菌」.
  • 基因突变:「基因突变」是作用于一个细菌的变换.给定一个 k×kk \times k 的突变概率矩阵 pp.记这个细菌的「基因数组」为 XX.对于 xx 中的每个元素 XiX_iXiX_i 会以 pXi,jp_{X_i,j} 的概率替换为 jj1jk1 \le j \le k).根据此定义,显然有 i[1,k],i=jkpi,j=1\forall i \in [1,k], \sum_{i=j}^k p_{i,j}=1

一次实验的过程如下:

  • 首先在一个空的培养皿中放入一个指定的细菌.
  • 在接下来的每分钟,现有的每个细菌会分裂成两个细菌,每个细菌的「基因数组」与原细菌完全相同.分裂之后,每个基因都会进行一次「基因突变」.
  • tt 分钟后,统计培养皿中「目标细菌」的数量,并结束实验.

现在给定一个长度为 nn 的「基因数组」ss.对于 ss 的每个前缀数组 s[1,1],s[1,2],,s[1,n]s[1,1],s[1,2],\dots,s[1,n],假设该数组是实验开始时放入的细菌的「基因数组」,请你求出实验结束时得到的「目标细菌」的数量的期望,对 109+710^9+7 取模.

输入格式

  • 第一行输入四个整数,n,m,k,tn,m,k,t
  • 第二行输入 nn 个整数,描述数组 ss
  • 接下来输入 mm 行.每行第一个整数 gi|g_i| 表示「目标数组」gig_i 的长度.接下来 gi|g_i| 个整数描述「目标数组」gig_i
  • 由于 pp 矩阵为实数矩阵,输入不方便,因此我们采用另一种方式输入 pp 矩阵.具体而言,接下来输入 kk 行,每行包含 kk 个整数,描述一个 k×kk \times k 的矩阵 pp'.则有
pi,j=pi,jl=1kpi,l.p_{i,j}=\frac{p'_{i,j}}{\sum_{l=1}^k p'_{i,l}}.

输出格式

  • 输出 nn 行,每行一个整数.表示假设以 s[1,i]s[1,i] 为初始细菌的「基因数组」,实验结束后能得到的「目标细菌」的数量的期望,对 109+710^9+7 取模.
2 2 2 1
1 1
1 1
2 2 2
1 1
1 1
1
500000005
5 5 5 1
1 4 2 3 3
3 1 1 4
3 5 1 4
4 1 4 1 4
2 5 3
1 5
9 9 8 2 4
4 3 5 3 2
1 4 7 4 8
3 6 4 7 1
1 4 5 1 4
250000002
273809526
931547626
97163867
377852186

提示

样例解释

样例 #1

  • 当前缀长度为 11 时,初始细菌的「基因数组」为 {1}\{1\}.分裂一次后变为 {1}\{1\}{2}\{2\} 的概率均为 12\frac 1 2.若变为 {1}\{1\},则是「目标细菌」;若变为 {2}\{2\},则不是「目标细菌」.分裂一次后培养皿中有 22 个细菌,故「目标细菌」总数的期望为 12×2=1\frac 1 2\times 2=1
  • 当前缀长度为 22 时,初始细菌的「基因数组」为 {1,1}\{1, 1\}.分裂一次后的细菌变为 {1,1},{1,2},{2,1},{2,2}\{1, 1\}, \{1, 2\}, \{2, 1\}, \{2, 2\} 的概率都为 14\frac 1 4.其中 {2,2},{1,2},{2,1}\{2, 2\},\{1,2\},\{2,1\} 均为「目标细菌」,{1,1}\{1,1\} 不是「目标细菌」(因为出现了两次子串 {1}\{1\}).即分裂后的「目标细菌」的总数的期望为 34\frac 3 4.分裂一次后培养皿中有 22 个细菌.即最后「目标细菌」数量之和的期望为 34×2=32\frac 3 4\times 2=\frac 3 2

数据范围

本题采用捆绑测试,且不存在一个 Subtask 包含其他所有 Subtask 的数据范围和限制.

$$\def{\arraystretch}{1.5} \begin{array}{|c|c|c|c|c|c|c|c|} \hline \textbf{Subtask} & \textbf{分值} &\bm{n\le} & \bm{m\le} &\bm{k\le}&\bm{t\le} & \bm {|g_i|\le} & \textbf{特殊性质} \cr \hline 1 & 1 & 10^5 & 10^5 & 100 & 0 & 10^5 \cr \hline 2 & 14 & 5 & 5 & 5 & 1 & 5 \cr \hline 3 & 15 & 10^3 & 1 & 10^3 & 1 & 100 & \text{A} \cr \hline 4 & 30 & 5\times 10^4 & 5 & 10 & 1 & 50 & \text{B} \cr \hline 5 & 20 & 5\times 10^4 & 5 & 10 & 10^3 & 50 \cr \hline 6 & 20 & 10^3 & 10^4 & 10 & 10^3 & 10^4 & \text{C}\cr \hline \end{array} $$
  • 特殊性质 A\textbf{A}:对于 i=1,2,,mi=1,2,\dots,m,保证 gig_{i} 中所有整数均为 11
  • 特殊性质 B\textbf{B}:对于 i=1,2,,ki=1,2,\dots, kj=1,2,,kj=1,2,\dots,k,保证 pi,j=1p'_{i,j}=1
  • 特殊性质 C\textbf{C}:保证 i=1mgi104\sum_{i=1}^m |g_i|\le 10^4

对于所有数据,保证 1n,m,gi1051\le n,m,\sum|g_i| \le 10^50t1030\le t\le 10^30pi,j1090\le p'_{i,j} \le 10^9.且 pp' 矩阵不会出现某一行的和在模 109+710^9+7 意义下为 00