这道题一开始想到处理中间是0的位置,但这样时间太慢了,后来想到一种类似二分的方法,就是把这一段的最小值找到,全部减去最小值,然后有0一出现,就又递归处理前一段,每次答案就加上这一段的最小值;

AC代码

 #include<iostream>
#include<cstdio>
#define maxx 100005
using namespace std;
int n;
int block[maxx];
long long ans;
void go(int l,int r)
{
if(l>r)return;
if(l==r){ans+=block[l];block[l]=;return;}
int pos;
int minn=maxx;
for(int i=l;i<=r;i++){
if(block[i]<minn)
{
minn=block[i];
pos=i;
}
}
ans+=minn;
for(int i=l;i<=r;i++)
block[i]-=minn;
go(l,pos-);
go(pos+,r);
}
int main()
{
freopen("block.in","r",stdin);
freopen("block.out","w",stdout);
cin>>n;
for(int i=;i<=n;i++)
scanf("%d",block+i);
go(,n);
cout<<ans;
return ;
}

但有个新高一的介绍了一种超厉害的方法,输入完就处理完了,每一步如果hi小于hi-1就加上差值,最后答案就是差值的和时间O(n)

AC代码

 #include<iostream>
#include<cstdio>
#define maxx 100005
using namespace std;
int n;
int block[maxx];
long long ans; int main()
{
freopen("block.in","r",stdin);
freopen("block.out","w",stdout);
cin>>n;
for(int i=;i<=n;i++)
{
scanf("%d",block+i);
if(block[i]>block[i-])
ans+=block[i]-block[i-];
}
cout<<ans;
return ;
}

最新文章

  1. Spark 入门
  2. MXNET安装过程中遇到libinfo导入不了的问题解决
  3. 解决ORA-14450:试图访问已经在使用的事务处理临时表
  4. idea首次提交项目
  5. web.config中httpRunTime的属性
  6. CocoaPods 添加第三方库报错
  7. 解决apache服务器本地可以访问,同局域网内他人不能访问的问题(转)
  8. 用sqlserver处理excel表格
  9. Windows消息大全
  10. 【转载】python 模块 - random生成随机数模块
  11. Codeforces Round #267 (Div. 2)D(DFS+单词hash+简单DP)
  12. UC编程:输入输出重定向(标准IO)
  13. 201521123101 《Java程序设计》第3周学习总结
  14. DLL的导出函数重定向机制
  15. haoi2018
  16. 廖雪峰网站:学习python函数—递归函数(四)
  17. ob 函数的使用
  18. (转)开放window是服务器端口——以8080为例
  19. Android Studio 设置代码提示和代码自动补全快捷键--Eclipse 风格 - 转
  20. AtCoder square869120 Contest #3 F sushi

热门文章

  1. [转载] Android随笔之——PackageManager详解
  2. JQuery easyui 笔记
  3. codeforces Codeforces Round #380 (Div. 1, Rated, Based on Technocup 2017 - Elimination Round 2)// 二分的题目硬生生想出来ON的算法
  4. SQL SERVER With语法[转]
  5. Multi-armed Bandit Problem与增强学习的联系
  6. Web服务器的工作原理
  7. 遇到IIS7配置PHP出现403和404错误的解决办法
  8. Bootstrap插件系列——Bootstrap-table初始化、分页、客户端搜索、服务端搜索
  9. Linux 条件判断
  10. Error:SSL peer shut down incorrectly