序列(【CCF】NOI Online能力测试 提高组第一题)

【题目描述】

小 D 有一个长度为 n 的整数序列 ai(下标从 1 开始编号,下同),她想通过若干次操作把它变成序列 bi。

小 D 有 m种可选的操作,第 i 种操作可使用三元组 (ti,ui,vi) 描述:若 ti=1,则她可以使 aui 与 avi 都加一或都减一;若 ti=2,则她可以使 aui-1、avi+1,或是 aui+1、avi-1,因此当 ui=vi 时,这种操作相当于没有操作。

小 D 可以以任意顺序执行操作,且每种操作都可进行无限次。现在给定序列与所有操作,请你帮她判断是否存在一种方案能将 ai 变为 bi。题目保证两个序列长度都为 n。若方案存在请输出 YES,否则输出 NO。

【输入格式】

从 sequence.in 读入数据。
本题输入文件包含多组数据。
第一行一个正整数 T 表示数据组数。对于每组数据:
第一行两个整数 n,m,表示序列长度与操作种数。
第二行 n 个整数表示序列 ai。
第三行 n 个整数表示序列 bi。
接下来 m 行每行三个整数 ti,ui,vi,第 i 行描述操作 i。
注意:同一个三元组 (ti,ui,vi) 可能在输入中出现多次。

【输出格式】

输出到文件 sequence.out 中。
对于每组数据输出一行一个字符串 YES 或 NO 表示答案。

【样例1输入】

3
1 1
1
3
1 1 1
2 3
1 2
4 5
1 1 2
2 1 2
1 1 2
3 3
1 2 3
5 5 4
1 1 2
1 1 3
2 2 3

【样例1输出】

YES
YES
YES

【样例1解释】

第一组数据:使用一次操作 1。第二组数据:使用三次操作 1。第三组数据:使用三次操作 1,令 a1,a2 都增加 3,再使用一次操作 2,令 a1,a3 都增加 1。

【数据范围与提示】

对于测试点 1 - 5:n=2,m=1,ai,bi ≤ 99,u1 ≠ v1,t1=1。
对于测试点 6 - 10:n=2,m=1,ai,bi ≤ 99,u1 ≠ v1,t1=2。
对于测试点 11 - 12:n=2,ai,bi ≤ 99,ui ≠ vi。
对于测试点 13 - 16:ti=2。
对于测试点 17:n,m ≤ 20。
对于测试点 18:n,m ≤ 1000。
对于所有测试点:1 ≤ T ≤ 10,1 ≤ n,m ≤ 105,1 ≤ ai,bi ≤ 109,ti ∈ {1,2},1≤ ui,vi≤ n。

【时间限制】

2.0s

【空间限制】

256MB

发布了133 篇原创文章 · 获赞 322 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45884316/article/details/104723590