题目传送门:1519 拆方块

  首先,我们可以发现,如果第i堆方块被消除,只有三种情况:

  1、第i-1堆方块全部被消除;

  2、第i+1堆方块全部被消除;(因为两侧的方块能够保护这一堆方块在两侧不暴露)

  3、第i堆方块过了h[i]次操作后,从上到下被消除。

  于是我们设l[i]为第i堆方块从左边开始消除的最小操作次数,设r[i]从右边开始消除的最小操作次数。

  然后从左向右dp出l[i],从右向左dp出r[i],然后就能算答案了。

  代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<algorithm>
#include<queue>
#include<vector>
#define ll long long
ll read()
{
ll tmp=; char f=,c=getchar();
while(c<''||''<c){if(c=='-')f=-;c=getchar();}
while(''<=c&&c<=''){tmp=tmp*+c-'';c=getchar();}
return tmp*f;
}
using namespace std;
int l[],r[],h[];
int main()
{
int n=read(),i;
for(i=;i<=n;i++)h[i]=read();
l[]=; for(i=;i<=n;i++)l[i]=min(l[i-]+,h[i]);
r[n]=; for(i=n-;i;i--)r[i]=min(r[i+]+,h[i]);
int ans=min(l[],r[]);
for(i=;i<=n;i++)ans=max(ans,min(l[i],r[i]));
printf("%d",ans);
}

最新文章

  1. vmstat和iostat
  2. go语言循环语句 for
  3. 浅谈被加壳ELF(即android的so文件)的调试
  4. Til the Cows Come Home
  5. Redhat linux 挂载命令mount
  6. Open Phone, SMS, Email, Skype and Browser apps of Android in Unity3d
  7. window.print打印指定div实例代码
  8. Java编程思想(2)之一切皆对象
  9. webservice使用基本技巧
  10. Asus 安装 windows 7
  11. [Q]复制授权了文件但仍显示“未注册”问题(安装在非默认目录或目录包含中文)
  12. Java Web学习路线图
  13. ELK学习总结(3-2)elk的过滤查询
  14. iOS ----------NSDate 、CFAbsoluteTimeGetCurrent、CACurrentMediaTime 的区别
  15. mysql-cluster集群配置
  16. rest参数与扩展运算符
  17. css实现圆形倒计时效果
  18. linux中的ftp命令
  19. INSTEAD OF与AFTER触发器
  20. 在linux下安装并使用websocket

热门文章

  1. redis string底层数据结构sds
  2. 第三章 T-SQL 编程
  3. js判断选择的时间是否大于今天
  4. Selenium IDE的使用
  5. AGS Server10.1中地图文档更新如何使服务更新
  6. h5-localStorage实现缓存ajax请求数据
  7. [转载]H5项目常见问题汇总及解决方案
  8. Java 注解入门
  9. word中插入的代码库设置局部背景色
  10. vue增删改查