[AGC040E] Prefix Suffix Addition 题解
Description
你有一个长为
- 选定整数
与不下降非负序列 ,对所有 ,令 加上 。 - 选定整数
与不上升非负序列 ,对所有 ,令 加上 。
问最少进行多少次操作使得最后对任意
Solution
首先如果只能做
这启发我们将每个
考虑 dp。
设
直接转移是
时间复杂度:
Code
#include <bits/stdc++.h> // #define int int64_t const int kMaxN = 2e5 + 5; int n; int a[kMaxN]; void dickdreamer() { std::cin >> n; for (int i = 1; i <= n; ++i) std::cin >> a[i]; // int val = 2, f0 = a[1], f1 = a[1] + 1, f2 = a[1] + 1; int val = 0, f0 = 0, f1 = 1, f2 = 1; std::function<int(int)> getreal = [&] (int x) -> int { if (x >= f2) return 1e9; if (x <= f0) return val; else if (x <= f1) return val - 1; else return val - 2; }; for (int i = 1; i <= n + 1; ++i) { int _val, _f0, _f1; std::function<int(int, int)> getcoef = [&] (int v1, int v2) -> int { return (v1 > v2) + (a[i - 1] - v1 < a[i] - v2); }; std::function<int(int)> calc = [&] (int x) -> int { return std::min({getreal(0) + getcoef(0, x), getreal(f0 + 1) + getcoef(f0 + 1, x), getreal(f1 + 1) + getcoef(f1 + 1, x)}); }; _val = calc(0), _f0 = 0; int L = 0, R = a[i] + 1; while (L + 1 < R) { int mid = (L + R) >> 1; if (calc(mid) >= _val) L = _f0 = mid; else R = mid; } L = _f1 = _f0, R = a[i] + 1; while (L + 1 < R) { int mid = (L + R) >> 1; if (calc(mid) >= _val - 1) L = _f1 = mid; else R = mid; } // std::cerr << i << ' ' << _val << ' ' << _f0 << ' ' << _f1 << " : \n"; // for (int j = 0; j <= a[i]; ++j) std::cerr << calc(j) << ' '; // std::cerr << '\n'; // if (_f0 <= a[i]) assert(calc(_f0) == _val && calc(_f0 + 1) != _val); // if (_f1 <= a[i]) assert(calc(_f1) == _val + 1); val = _val, f0 = _f0, f1 = _f1, f2 = a[i] + 1; } std::cout << val << '\n'; } int32_t main() { #ifdef ORZXKR freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0); int T = 1; // std::cin >> T; while (T--) dickdreamer(); // std::cerr << 1.0 * clock() / CLOCKS_PER_SEC << "s\n"; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2024-02-20 P5163 WD与地图 题解