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

浙公网安备 33010602011771号