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$,存在如下策略:

  1. 找到 $k=\min\limits_{a_x>a_1}x$。
  2. 有 $a_{k-1}<a_k$,删除 $a_{k-1}$ 直到 $k=1$。
  3. 重复过程 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;
}
posted @ 2022-12-10 08:57  5k_sync_closer  阅读(8)  评论(0编辑  收藏  举报  来源