CF1375C Element Extermination 题解
当我们想不出如何才能判断答案为
结合题目中的规则,以及样例可以观察到,在数组变化的过程中,最左端的数的大小一定不会减小,最右端的数的大小一定不会增加。
证明:移除一个数的条件为
所以如果
接着进行猜想:如果
接下来我们就要尝试想出一个策略,保证当
这个策略是这样的:每次找到一个离
综上所述:
- 当
a_1 > a_n 时,不可能做到使数组只剩下一个数; - 否则,则必定可以使数组只剩下一个数。
代码:
#include<cstdio>
const int maxn = 3e5 + 10;
int a[maxn];
void solve()
{
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", a + i);
puts(a[n] > a[1] ? "YES" : "NO");
return;
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
solve();
return 0;
}