$Luogu$

去年$Noip$的时候我并没有做过原题,然后考场上也没有想出正解,就写了个优化了一点的暴力:树状数组+差分,然后就$A$了$ovo$.

$Sol$

只要$O(N)$扫一遍,只要当前值比前一个值大,那么答案就累计这两个值的差的绝对值.$over.$

$Code$

#include<iostream>
#include<cstdio>
#define rg register
#define ll long long
using namespace std;
int read()
{
int x=,y=;char c;
c=getchar();
while(c<''||c>'') {if(c=='-') y=-;c=getchar();}
while(c>=''&&c<='') {x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n;
ll ans;
int a[],b[];
int lowbit(int x)
{
return x&(-x);
}
void add(int x,int k)
{
for(rg int i=x;i<=n;i+=lowbit(i)) b[i]+=k;
}
ll sum(int x)
{
ll sum1=;
for(rg int i=x;i>=;i-=lowbit(i))
sum1+=b[i];
return sum1;
}
int minn,l,r;
int main()
{
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
n=read();minn=;
for(rg int i=;i<=n;i++)
{
a[i]=read();
minn=min(a[i],minn);
add(i,a[i]-a[i-]);
}
ans+=minn;
add(,-minn);
if(a[]!=) l=;
for(rg int i=;i<=n;i++)
{
int s=sum(i);
if(s)
{
if(l==) {l=i;r=i;minn=s;}
else {minn=min(minn,s);r=i;}
if(i!=n) continue ;
}
else if(l==) continue;
ans+=minn;
add(l,-minn);
if(r<n) add(r+,minn);
i=l-;l=;
}
printf("%lld",ans);
return ;
}

View 考场 Code

#include<iostream>
#include<cstdio>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define ll long long
using namespace std;
il int read()
{
Rg int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n,x,y;ll as;
int main()
{
n=read();
go(i,,n){y=read();if(y>x)as+=y-x;x=y;}
printf("%lld\n",as);
return ;
}

View 正解 Code

最新文章

  1. 正则表达式工具RegexBuddy使用教程
  2. 【UOJ#33】【UR#2】树上GCD 有根树点分治 + 容斥原理 + 分块
  3. c#中各类日期的计算方法,收藏
  4. Longest Palindromic Substring
  5. coreData 深入理解4 --总结 (线程安全与同步--iOS5 前后对比)
  6. c++网络通信(与服务器通信聊天)和c#网络通信
  7. apk当安装程序将文件复制到手机自带的指定文件夹
  8. SEQ序号与ACK序号理解总结
  9. LeetCode 339. Nested List Weight Sum (嵌套列表重和)$
  10. LeetCode - 520. Detect Capital
  11. springboot~Profile开发环境与单元测试用不同的数据库
  12. WPF气泡样式弹窗效果
  13. SQL性能优化十条经验,后台程序员都需要掌握
  14. Shell 变量、脚本参数
  15. java实现随机产生6位数的方法总结
  16. 网站优化--减少HTTP请求
  17. spark sql中进行sechema合并
  18. MongoDB整库备份+整库导入
  19. 我们为什么选择JAVA
  20. Java进阶知识点7:不要只会写synchronized - JDK十大并发编程组件总结

热门文章

  1. 2018-11-26-WPF-通过-DrawingContext-DrawImage-绘制图片
  2. Data Flow-File Read-详细过程
  3. linux下修改gcc编译器版本
  4. JavaScript 字符串转为数字
  5. 如果用HTML5做一个在线视频聊天【原创】
  6. HTML静态网页---样式属性
  7. POJ 2752 Seek the Name, Seek the Fame next数组理解加深
  8. iptables [match] 常用封包匹配参数
  9. Python--day24--继承
  10. CodeForces 620E&quot;New Year Tree&quot;(DFS序+线段树+状态压缩)