NO1P2018 T1铺设道路 | | (NO1P2013 积木大赛)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,last=0,ans=0;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int x;scanf("%d",&x);
if(x>last) ans+=(x-last);
last=x;
}
printf("%d",ans);
return 0;
}
考完NOIPday1,整个人都不好了。。。。。<_>
把序列分成(a1,..ai)(ai+1,...aj)......(ak,...an)多个非递减序列。
然后所有段中最大值的和减去除第一段外的段的最小值,化简一下,就出来了