1 条题解
-
0
#include <cstdio> #include <iostream> #include <algorithm> // 用于min函数 using namespace std; int a[100005]; int main() { freopen("tea.in", "r", stdin); freopen("tea.out", "w", stdout); int n, m; cin >> n >> m; long long ans = 0; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { if (a[i] + a[i - 1] > m) { // 核心逻辑:计算需要减少的总量,使两数之和≤m // 超出的部分 = 两数之和 - m int excess = a[i] + a[i - 1] - m; // 累加超出部分到答案(这是这类问题最常见的需求) ans += excess; // 可选:调整数组元素(如果需要保证后续计算的准确性) // 优先减少后一个元素(也可以选择前一个,逻辑一致) a[i] -= excess; // 防止调整后出现负数(可选的健壮性处理) if (a[i] < 0) a[i] = 0; } } cout << ans << endl; return 0; }
- 1
信息
- ID
- 177
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 205
- 已通过
- 48
- 上传者