学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:洛谷刷题C++语言 | 汇总
【题目描述】
语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗?
【输入】
第一行有两个整数 n n n, p p p,代表学生数与增加分数的次数。
第二行有 n n n 个数, a 1 ∼ a n a1∼an a1∼an,代表各个学生的初始成绩。
接下来 p p p 行,每行有三个数, x x x, y y y, z z z,代表给第 x x x 个到第 y y y 个学生每人增加 z z z 分。
【输出】
输出仅一行,代表更改分数后,全班的最低分。
【输入样例】
3 2
1 1 1
1 2 1
2 3 1
【输出样例】
2
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n, p, a[5000005], b[5000005], minn=1e9;
int main()
{
cin >> n >> p;
for (int i=1; i<=n; i++) {
cin >> a[i];
b[i] = a[i]-a[i-1];
}
while (p--) {
int x, y, z;
cin >> x >> y >> z;
b[x] += z;
b[y+1] -= z;
}
for (int i=1; i<=n; i++) {
b[i] = b[i-1] + b[i];
}
for (int i=1; i<=n; i++) {
minn = min(minn, b[i]);
}
cout << minn << endl;
return 0;
}
【运行结果】
3 2
1 1 1
1 2 1
2 3 1
2