#P17421. [ICPC 2018 Xuzhou R] Rikka with Subsequences
[ICPC 2018 Xuzhou R] Rikka with Subsequences
题目描述
对于一个已知序列,统计具有某种显著性质的子序列个数,能在一定程度上刻画序列本身的特征。
现在,Rikka 有一个长度为 的序列 ,其元素记为 ,均为 内的正整数。桥接关系矩阵(BRM)是一个 的逻辑矩阵,其元素取自 。在此,Rikka 基于给定的 BRM 定义了 Yuta 子序列。
对于一个 的子序列,记作 ,其中 且 ,当且仅当对于每个 均满足 时,Rikka 称其为 Yuta 子序列。统计不同 Yuta 子序列的个数在数据分析和数据恢复中具有深远的价值。
Rikka 认为这个任务过于简单,想让它看起来更难、更具启发性。她知道同一个 Yuta 子序列可能在序列 中出现多次,而顶尖程序员或许会用 C++ 中的 map<vector<int>, bigInt> cnt 或 Java 中的 Map<ArrayList<Integer>, BigInteger> cnt 来存储所有 Yuta 子序列并统计其出现次数。
她将所有 Yuta 子序列出现次数的立方之和(也就是 cnt 中所有第二个元素的立方之和)称为 关于 的第三系数。
现在,在给出序列和 BRM 之后,她希望你能计算给定序列关于给定 BRM 的第三系数,结果对 取模。
输入格式
输入包含多组测试数据,第一行包含一个整数 (),表示测试数据的组数。
对于每组测试数据,第一行包含一个整数 (),表示序列 的长度。
第二行包含 个整数 ()。
接下来的 行描述给定的 BRM,每行包含 个字符,其中第 行的第 个字符为 或 ,表示元素 。
输出格式
对于每组测试数据,输出一行一个整数,表示给定序列关于给定 BRM 的第三系数对 取模的结果。
1
4
1 2 1 2
1111
1111
1111
1111
51
提示
翻译由 DeepSeek V4 Pro 完成