Problem - E - Codeforces
题意:
思路:
样例:
这种分类讨论的题,主要是去看答案的最终来源是哪几种情况,这几种情况得不重不漏
Code:
#include <bits/stdc++.h>#define int long longusing i64 = long long;constexpr int N = 2e5 + 10;
constexpr int mod = 998244353;int n;
int a[N];void solve() {std::cin >> n;for (int i = 1; i <= n; i ++) {std::cin >> a[i];}int ans = 1e9;for (int i = 2; i <= n; i ++) {int u = a[i - 1], v = a[i];if (u > v) std::swap(u, v);if (v > 2 * u) {ans = std::min(ans, (v + 2 - 1) / 2);}else {ans = std::min(ans, (u + v + 3 - 1) / 3);}}for (int i = 1; i <= n - 2; i ++) {int u = a[i];int v = a[i + 2];if (u > v) std::swap(u, v);if (u % 2 == 1 && v % 2 == 1) {ans = std::min(ans, u / 2 + v / 2 + 1);}}std::sort(a + 1, a + 1 + n);ans = std::min(ans, (a[1] + 1) / 2 + (a[2] + 1) / 2);std::cout << ans << "\n";
}
signed main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t = 1;while (t--) {solve();}return 0;
}