【普及】构造回文数组
给你一个长度为 n 的数组 a 和一个整数 m,你可以执行如下操作无数次
- 选定 A 中的 m 个数,将它们全部加 1
比如:a=[3,2,8,4,6], 我们选择 [2,8,6] 各加 1,那么数组 a 变成 [3,2+1,8+1,4,6+1]=[3,3,9,4,7]
请问:能否经过若干次操作,将数组 a 变成回文的。
注意:当一个数组从左往右读,和从右往左读是一样的时候,我们称这个数组是回文的。比如 [4,10,10,4] 和 [7,1,7]是回文的
输入格式
第一行是一个整数 T,代表数据的组数,接下来有 T 组数据
每组数据的第一行 2 个正整数 n,m
每组数据的第二行包含 n 个正整数表示数组 a
输出格式
对于每组数据输出一行
如果可以将数组 a 变成回文的, 输出 YES
否则输出 NO
4
5 3
2 4 5 4 2
6 1
4 5 5 4 6 4
6 2
4 5 5 4 6 4
4 2
1 2 3 3
YES
YES
YES
NO
提示
【样例 1 解释】
- 样例 1:数组 a 本身就是回文的
- 样例 2:$[4,5,5,4,6,4] \rightarrow [4,5,5,5,6,4] \rightarrow [4,6,5,5,6,4]$
- 样例 3:[4,5,5,4,6,4]→[4,6,5,5,6,4]
- 样例 4:做不到
【数据范围】
- 对于 100% 的数据,1≤m≤n≤105,1≤ai≤106
- 单组数据内的 n 之和不超过 106
| 测试点编号 |
n |
m |
ai |
| 1∼4 |
n≤5 |
m≤2 |
ai≤10 |
| 5∼8 |
n≤10 |
m≤5 |
| 9∼20 |
无 |
请思考后再点击查看提示
来源