luogu#P6698. [BalticOI 2020 Day2] 病毒

[BalticOI 2020 Day2] 病毒

题目背景

本题数据为删减版(去掉了最后的 66 组数据),完整版请去 CF1387C 提交。

题目描述

给定一种病毒,为了方便,我们用 00G1G-1 的整数描述他的基因序列。

现在这个病毒可以进行变异,有一些变异规则,每个变异规则可以让基因序列上的某个数变成某个片段,如果用变异规则让基因序列变成了全部为 0011 的序列,那么这个病毒就变异完成了。

病毒可以通过抗体进行检测,比如 0101101011 就可以检测到 01011100101110,但不能检测到 110110110110

对于从 22G1G-1 中的基因,科学家想知道,是否能通过任意一组给定的抗体检测到这个基因变异形成的其他所有基因,不能的话,那么求不能检测到的基因中的最短长度。

输入格式

第一行三个整数 G,N,MG,N,M 代表基因数,变异规则数和抗体数。
接下来 NN 行每行首先两个整数 a,ka,k,然后接着 kk 个整数 bib_i,代表 aa 可以通过这个变异规则变为 b1,b2,,bkb_1,b_2,\cdots,b_k 这个片段,保证 22G1G-1 都至少在每个规则中的 aa 中出现一次。
接下来 MM 行每行首先一个整数 ll 代表抗体长度,接下来 ll 个整数 cic_i 描述这个抗体。

输出格式

G2G-2 行第 ii 行代表 ii 基因以及其所有变异到的基因是否都可以被任意一组抗体检测到,如果可以,输出一个字符串 YES,如果不可以,首先一个字符串 NO,接下来一个整数代表不能检测到的基因中的最短长度。保证对于所有数据,该值小于 2632^{63}

6 6 2
2 2 0 1
3 3 2 0 0
3 2 1 3
4 4 0 3 1 2
5 2 2 1
5 1 5
2 1 1
5 0 0 1 0 0
NO 2
NO 4
NO 9
YES

提示

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(11 pts):M=0M=0
  • Subtask 2(14 pts):N=G2N = G-2
  • Subtask 3(25 pts):M=1M=1
  • Subtask 4(32 pts):l10\sum l \le 10
  • Subtask 5(18 pts):无特殊限制。

对于 100%100\% 的数据,G>2G > 2NG2N \ge G-2M0M \ge 02a<G2 \le a <Gk1k \ge 10bi<G0 \le b_i<Gk100\sum k \le 100l1l \ge 10ci10 \le c_i \le 1l50\sum l\le 50

本题强制 O2O2 优化。