【思维构造】Element Extermination—CF1375C

Element Extermination—CF1375C
参考文章

思路

a 1 < a n a_1a1<an
初始时 a 2 , . . . , a n − 1 a_2, ..., a_{n-1} a2,...,an1 n − 2 n-2 n2 个元素中大于 a 1 a_1 a1 中的元素都能通过 a 1 a_1 a1 而被删除,而小于 a n a_n an 中的元素都能通过 a n a_n an 而被删除。易知这样这 n − 2 n-2 n2 个元素一定大于 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_1>a_n a1>an
因为在删除 a a a 中的元素的时候,易知 a 1 a_1 a1 不会减小, a n a_n an 不会增大。所以动态变化的数组 a a a 无论什么时候都一定满足 a 1 > a n a_1>a_n a1>an,那么显而易见 a a a 数组不可能剩一个元素。

C o d e Code Code

#include 
#define int long long
#define sz(a) ((int)a.size())
#define all(a) a.begin(), a.end()
using namespace std;
using PII = pair<int, 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;
}

你可能感兴趣的:(思维构造,算法,c++)