本文共 1252 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要找到连续m个刺痛值的最小总和。我们可以使用滑动窗口技术来高效地解决这个问题。
#include#include #include #include using namespace std;#define N 3010int read() { int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } return x * f;}int main() { int n = read(); int m = read(); int* a = new int[n]; for (int i = 0; i < n; ++i) { a[i] = read(); } if (m > n) { cout << 0 << endl; return 0; } int sum = 0; for (int i = 0; i < m; ++i) { sum += a[i]; } int minn = sum; for (int i = 1; i <= n - m; ++i) { sum = sum - a[i - 1] + a[i + m - 1]; if (sum < minn) { minn = sum; } } cout << minn << endl; return 0;}
read函数读取输入数据,处理多个数字。这个方法高效且简洁,能够在O(n)的时间复杂度内解决问题,适用于较大的输入规模。
转载地址:http://vdvfk.baihongyu.com/