A3141 | 序列合拆
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
$Yuilice$拥有一个长度为$n$的序列$a_1,a_2,a_3\dots a_n$,以及一个正整数$m$,你可以对该序列进行以下两种操作。
1. 在序列当中的整数$a_i$,若整数$a_i > m$且满足条件$a_i \% m = 0$则$a_i$可以被均等的拆分为$m$份,每份数值为$\frac{a_i}{m}$,组成一个子序列从而替代$a_i$原先的位置。
2. 在序列当中若存在一段连续子序列$[l,r]$满足$a_l = a_{l+1} = \dots a_r$,并且该序列长度为$m$,那么可以选中该连续子序列$[l,r]$合并为一个整数$a_i = a_l * m$从而替代子序列$[l,r]$。
现在$Yuilice$给出一个新的序列$b$,求解序列$a$是否可以通过以上两种操作变为$b$,若可以输出
注:本题包含多组测试样例
1. 在序列当中的整数$a_i$,若整数$a_i > m$且满足条件$a_i \% m = 0$则$a_i$可以被均等的拆分为$m$份,每份数值为$\frac{a_i}{m}$,组成一个子序列从而替代$a_i$原先的位置。
2. 在序列当中若存在一段连续子序列$[l,r]$满足$a_l = a_{l+1} = \dots a_r$,并且该序列长度为$m$,那么可以选中该连续子序列$[l,r]$合并为一个整数$a_i = a_l * m$从而替代子序列$[l,r]$。
现在$Yuilice$给出一个新的序列$b$,求解序列$a$是否可以通过以上两种操作变为$b$,若可以输出
Yes,反之输出 No。注:本题包含多组测试样例
输入格式
第一行输入一个整数$t(1 \leq t \leq 10^4)$ - 代表共有T组样例进行测试。
每组样例的输入格式如下:
题目保证在每个测试点当中,$n$的取值总和不超过$2 \times 10^5$。
每组样例的输入格式如下:
第一行输入两个整数$n,m(1 \leq n \leq 5 \times 10^{4} , 2 \leq m \leq 10^9)$ - 代表序列$a$的长度与$m$的取值。
第二行输入$n$个整数$a_i(1 \leq a_i \leq 10^9)$ - 代表序列a的取值
第三行输入一个整数$k(1 \leq k \leq 5 \times 10^4)$ - 代表序列$b$的长度
第四行输出$k$个整数$b_i(1 \leq b_i \leq 10^9)$ - 代表序列$b$的取值
题目保证在每个测试点当中,$n$的取值总和不超过$2 \times 10^5$。
输出格式
针对于每组样例 - 输出
Yes或 No,独占一行。输入输出样例
输入 #1
5 3 2 2 2 2 2 4 2 3 2 2 2 2 1 6 8 2 1 1 1 1 1 1 1 1 4 2 2 2 2 8 3 3 9 6 3 12 12 36 12 16 9 3 2 2 2 3 4 12 4 12 4 12 4 12 4 4 8 3 3 9 6 3 12 12 36 12 7 12 2 4 3 4 12 56
输出 #1
Yes No Yes Yes No
【样例解释】
1. 序列$a$合并$a_1,a_2$变为$4$,即可相等。
2. 序列$a$合并$a_1,a_2$变为$4$,序列变为${4,2}$,不满足$a_i = a_{i+1}$,无法合并为$6$ 。
1. 序列$a$合并$a_1,a_2$变为$4$,即可相等。
2. 序列$a$合并$a_1,a_2$变为$4$,序列变为${4,2}$,不满足$a_i = a_{i+1}$,无法合并为$6$ 。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?