P2026 - [蓝桥杯2022初赛] 青蛙过河 - New Online Judgehttp://oj.ecustacm.cn/problem.php?id=2026二分枚举y,检查每一段长度为y的区间内的石头高度总和是否>=2x。
如果有一段长度为y的区间不能被经过2x次,那么肯定不行。
#includeusing namespace std; typedef long long ll; const int N = 1e5 + 4; ll sum[N] = {0}; int n, x; int check(int y) { for (int i = y; i <= n - 1; i++) { if (sum[i] - sum[i - y] < 2 * x) { return 0; } } return 1; } int main() { cin >> n >> x; int h; for (int i = 1; i <= n - 1; i++) { cin >> h; sum[i] = sum[i - 1] + h; } int left = 0, right = 1e5; while (left < right) { int mid = (left + right) >> 1; if (check(mid)) { right = mid; } else { left = mid + 1; } } cout << left; return 0; }



