P5019 铺设道路 (差分)

题目链接:P5019

解题思路:

得到差分数组,要想把路填平,则需要差分数组都变为0,则需要天数等于负数和的绝对值加上正数和减去负数和的绝对值(填负数时,正数和减少了),即为正数和,再加上数组首元素(保证把所有坑高度一样,且路填平了)

AC代码:

 

 1 #include <iostream> // 注释用心了
 2 #include <cstdio> 
 3 using namespace std;
 4 int n,sum,a[100010],d[100010];
 5 int main()
 6 {
 7     cin >> n;
 8     for(int i = 1; i <= n; i++)
 9     {
10         cin >> a[i];
11         d[i] = a[i]-a[i-1];
12     }
13     for(int i = 1; i <= n; i++)
14     {
15         if(d[i] >= 0) sum += d[i];
16     }
17     cout << sum;
18     return 0;
19 }

 

多少沾点tx

 

posted @ 2020-09-12 23:02  不敢说的梦  阅读(128)  评论(0)    收藏  举报