学习软件编程,软件优化,肇庆建网站,不用下载微信在线登录Element Extermination—CF1375C 参考文章
思路
若 a 1 a n a_1a_n a1an#xff0c; 初始时 a 2 , . . . , a n − 1 a_2, ..., a_{n-1} a2,...,an−1 这 n − 2 n-2 n−2 个元素中大于 a 1 a_1 a1 中的元素都能通过 a 1 a_1 a1 而被删除 a n a_1a_n a1an 初始时 a 2 , . . . , a n − 1 a_2, ..., a_{n-1} a2,...,an−1 这 n − 2 n-2 n−2 个元素中大于 a 1 a_1 a1 中的元素都能通过 a 1 a_1 a1 而被删除而小于 a n a_n an 中的元素都能通过 a n a_n an 而被删除。易知这样这 n − 2 n-2 n−2 个元素一定大于 a 1 a_1 a1 或小于 a n a_n an所以最后剩下初始时的 a 1 a_1 a1 和 a n a_n an任意删除其中一个即可。
若 a 1 a n a_1a_n a1an 因为在删除 a a a 中的元素的时候易知 a 1 a_1 a1 不会减小 a n a_n an 不会增大。所以动态变化的数组 a a a 无论什么时候都一定满足 a 1 a n a_1a_n a1an那么显而易见 a a a 数组不可能剩一个元素。 C o d e Code Code
#include bits/stdc.h
#define int long long
#define sz(a) ((int)a.size())
#define all(a) a.begin(), a.end()
using namespace std;
using PII pairint, int;
using i128 __int128;
const int N 3e5 10;int n;
int a1, an;void solve() {cin n;for (int i 1; i n; i ) {cin an;if (i 1) {a1 an;}}if (a1 an) {cout YES\n;} else {cout NO\n;}
}signed main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T 1;cin T; cin.get();while (T --) solve();return 0;
}