Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)

A.一道模拟题

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main () {
	int T;
	cin >> T;
	while(T--) {
		int n;
		cin >> n;
		std::vector<ll> a(n);
		std::vector<ll> b(n);
		std::vector<ll> t(n);
		for(int i = 0; i < n; ++i) {
			cin >> a[i] >> b[i];
		}
		for(int i = 0; i < n; ++i) {
			cin >> t[i];
		}
		ll last = 0;
		ll ans = 0;
		for(int i = 0; i < n; ++i) {
			last = (i == 0) ? 0 : b[i - 1]; 
			ans += a[i] - last;
			ans += t[i];
			if(i == n - 1) {
				break;
			}
			ll gap = ll(double(b[i] - a[i]) / 2.0 + 0.5);
			ans += gap;
			if(ans < b[i]) ans = b[i];
			// cout << ans << endl;
		}
		cout << ans << endl;
	}
}

B 从顶部往下部扫描O(n)。如果区间修改,考虑树状数组O(nlogn)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main () {
	int T;
	cin >> T;
	while(T--) {
		int n;
		cin >> n;
		std::vector<int> v(n);
		std::vector<int> ans(n, 0);
		for(int i = 0; i < n; ++i) {
			cin >> v[i];
		}
		int gap = v[n - 1];
		for(int i = n - 1; i >= 0; ) {
			if(gap) {
				ans[i] = 1;
				gap--;
			}
			i--;
			gap = max(gap, v[i]);
		}
		for(int i = 0; i < n; ++i) {
			cout << ans[i];
			if(i == n - 1) {
				cout << endl;
			} else {
				cout << " ";
			}
		}
	}
}

C 利用鸽巢原理分析如果为yes,判断在Time Exceed之前即可完成

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
#define ft first
#define se second
std::vector<P> s(5000010);
int main () {
	int n;
	cin >> n;
	std::vector<ll> v(n + 1);
	for(int i = 1; i <= n; ++i) {
		cin >> v[i];
	}

	for(int i = 1; i < n; ++i) {
		for(int j = i + 1; j <= n; ++j) {
			ll x = v[i] + v[j];
			if(s[x].ft && s[x].se && s[x].ft != i && s[x].ft != j && s[x].se != i && s[x].se != j) {
				cout << "YES" << endl;
				cout << s[x].ft << " " << s[x].se << " " << i << " " << j << endl;
				return 0;
			}
			s[x].ft = i, s[x].se = j;
		}
	}
	cout << "NO" << endl;
}

作者:LightAc
出处:https://www.cnblogs.com/lightac/
联系:
Email: dzz@stu.ouc.edu.cn
QQ: 1171613053
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/lightac/p/14531833.html