#CF2062B. 钟表装置
钟表装置
题目描述
每次测试的时间限制: 秒 每次测试的内存限制: 兆字节
你有一排 个时钟,第 个时钟的初始时间为 。每一秒按顺序发生以下事件:
每个时钟的时间减少 。如果任意一个时钟的时间变为 ,你立即失败。
你可以选择移动到相邻的时钟,或者停留在当前所在的时钟。
你可以将当前所在时钟的时间重置回其初始值 。
注意以上事件按顺序发生。如果在某一秒中某个时钟的时间变为 ,即使你可以在这一秒内移动到该时钟并重置它,你仍然会失败。
你可以从任意一个时钟开始。判断是否存在一种方式,使得这个过程可以无限持续下去而不失败。
输入格式
第一行包含一个整数 ()—— 测试用例的数量。
对于每个测试用例,第一行包含一个整数 ()—— 时钟的数量。
第二行包含 个整数 ()—— 每个时钟的初始时间。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,如果存在无限持续的方法,输出 "YES",否则输出 "NO"。
你可以以任何大小写输出 "YES" 和 "NO"(例如,"yEs"、"yes" 和 "Yes" 都会被识别为肯定回答)。
5
2
4 10
2
2 2
3
4 10 5
3
5 3 5
5
12 13 25 17 30
YES
NO
NO
YES
YES
注意
在第一个测试用例中,你可以在两个时钟之间来回移动,反复重置它们。
在第三个测试用例中,假设你从时钟 开始并采用以下策略:
初始:。
第一秒:时间变为 。你移动到时钟 并重置它,得到 。
第二秒:时间变为 。你移动到时钟 并重置它,得到 。
第三秒:时间变为 。你移动到时钟 并重置它,得到 。
第四秒:时间变为 。你移动到时钟 ,但因为 已经变为 ,你失败。
可以证明,没有其他策略能使这个过程无限持续下去。