牛客挑战赛39 [口胡]

屑挑战赛

真心无聊。。div1难度能轻松口胡.jpg

A,随便二分一下就没了,或者排个序啥的,无所谓…

B,后缀排序套个板子就过了…

C,线段树上面乱搞,他说了模数你乘起来发现不超过 int,随便写就过了…

D,子集卷积完了 NTT,然后 FWT 一手就过了。

E,随便 DP 一下就过了。

F,二合一的题,cot2+bzoj原题搬到序列上,随便写即可,这种做法应该是吊打 std 了…还是我应该说 std 太蠢了…

代码到时候再补…

#include <bits/stdc++.h>
#define in cin
using namespace std;

signed main() {
	ios :: sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);
	int _;
	in >> _;
	while(_ --) {
		int n;
		in >> n;
		vector <int> a(n);
		for(int i = 0 ; i < n ; i ++) in >> a[i];
		vector <int> l, r; l.push_back(0), r.push_back(0);
		for(int i = 0 ; i < n ; i ++) {
			if(a[i] < 0) {
				l.push_back(-a[i]);
			} else {
				r.push_back(a[i]);
			}
		}
		sort(l.begin(), l.end());
		sort(r.begin(), r.end());
		int ans = 1e9, res = 1e9;
		for(int i = 0 ; i < r.size() - 1; i ++) {
			int x = r[i + 1] + r.back() >> 1;
			res = min(res, max({r[i], x - r[i + 1], r.back() - x}));
		}
		ans = min(ans, max(res, l.back()));
		res = 1e9;
		for(int i = 0 ; i < l.size() - 1; i ++) {
			int x = l[i + 1] + l.back() >> 1;
			res = min(res, max({l[i], x - l[i + 1], l.back() - x}));
		}
		ans = min(ans, max(res, r.back()));
		cout << ans << '\n';
	}
	return 0;
}

猜你喜欢

转载自www.cnblogs.com/Isaunoya/p/12723474.html