[NOIp2013提高組]積木搭建/[NOIp2018提高組]鋪設道路
阿新 • • 發佈:2018-11-10
[NOIp2013提高組]積木搭建/[NOIp2018提高組]鋪設道路
題目大意:
對於長度為\(n(n\le10^5)\)的非負數列\(A\),每次可以選取一個區間\(-1\)。問將數列清零至少需要幾次操作。
思路:
差分後,將大於\(0\)的差分累加入答案即可。
原始碼:
#include<cstdio> #include<cctype> #include<algorithm> inline int getint() { register char ch; while(!isdigit(ch=getchar())); register int x=ch^'0'; while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); return x; } const int N=1e5+1; int d[N]; int main() { const int n=getint(); for(register int i=1;i<=n;i++) { d[i]=getint(); } int ans=0; for(register int i=n;i>=1;i--) { ans+=std::max(d[i]-d[i-1],0); } printf("%d\n",ans); return 0; }