问题描述:2018noip提高组第一天第一题
问题分析:
本题主要考察了数学。这是个经典的差分问题,求差分,考虑差分中所有正数的和。(同时也是所有负数和的相反数)
将所有要填的坑的深度画出来,形成上面一条不连续的曲线(如图),我们可以将曲线看做一个一个“小山丘”,对于每个突起的山丘而言,填“A[极大]-A[极小]”天即可填完,初始的突起填A[极大]-0天。每个突填完,所有的坑就填完了。
解决方案:
#include <cstdio>
int main() {
int n, h1 = 0, h, ans = 0;
scanf("%d", &n);
while(n--) {
scanf("%d", &h);
h > h1 ? ans += h - h1 : 0;
h1 = h;
}
printf("%d", ans);
return 0;
}
本题和 NOIP2013 第一天第一题一模一样,数据范围,输入输出格式,标程做法,题目主人公。
只是题意有微小的差别。
大意:
输入一个数组 ai,每次可以选择一个区间,使区间内的数字都减少 1。希望把所有数字都变成 0,问最少需要几次操作。
据说本题是 NOIP2013原题。数据范围,输入输出格式果然完全一样。见下图: