D. Cleaning(思维好题+前缀)
https://codeforces.com/contest/1474/problem/D题意:n个数,现在你可以取出相邻的都不为0的数,使得他们同时减1,如果一个堆为0了,它并不会消失掉,此时我们有至多一次机会操作,交换相邻两个数的位置,问能不能使得全部的数都变为0.思路:首先发现,端点一定要<=后面的值,不然肯定不成立。于是a2>=a1,减了之后a2=a2-a1;此时a2变成端点,同理可知a3>=此时的a2才能成立.那么对于从尾巴开始也是这个道理。那