CF1375C Element Extermination 题解
结论:存在策略使得 $a$ 只剩下一个元素 $\Leftrightarrow a_1<a_n$。
充分性证明:观察到操作过程中 $a$ 最左端的数不降,$a$ 最右端的数不增。
证明:对最左端的数操作时,有 $a_1<a_2$,删除 $a_2$ 后最左端的数不变,删除 $a_1$ 后最左端的数变大。
最右端的数同理。
若存在策略,则删到 $|a|=2$ 时有 $a_1<a_2$,
又因为 $a$ 最左端的数不降,$a$ 最右端的数不增,所以原序列中 $a_1<a_n$。
必要性证明:若 $a_1<a_n$,存在如下策略:
- 找到 $k=\min\limits_{a_x>a_1}x$。
- 有 $a_{k-1}<a_k$,删除 $a_{k-1}$ 直到 $k=1$。
- 重复过程 1,2 直到 $a$ 只剩下一个元素。
#include <cstdio>
int T, n, a[300050];
int main()
{
scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", a + i);
puts(a[1] < a[n] ? "YES" : "NO");
}
return 0;
}