dp+预处理

dp[i]表示第i天时的水位线有多少条,

然后你会发现这个dp是有后效性的,当第i天的m[i]>dp[i-1]时就要修改之前的dp值

因此我们预处理出每一天的至少要多少条水位线,记l[i]为多少条水位线

所以每天至少需要m[i]+1条水位线,然后我们从后往前枚举,记录now表示从后推出当前的i需要的水位线

l[i]=max(now,m[i]+1)

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m[100011],dp[100011];
ll l[100011];
int main()
{
scanf("%lld",&n);
for (int i=1;i<=n;i++)
scanf("%lld",&m[i]);
ll now;
now=m[n]+1;
for (int i=n;i>=1;i--)
{
now--;
now=max(now,m[i]+1);
l[i]=now;//同上
}
dp[1]=1;//第一天肯定有一条水位线
for (int i=2;i<=n;i++)
{
dp[i]=dp[i-1];
dp[i]=max(dp[i],m[i]+1);
dp[i]=max(dp[i],l[i]);
}
ll ans=0;
for (int i=1;i<=n;i++)
ans+=dp[i]-1-m[i];//统计水位之下的水位线
printf("%lld\n",ans);
}

最新文章

  1. C#文件安全管理解析
  2. iOS开发——UI进阶篇(三)自定义不等高cell,如何拿到cell的行高,自动计算cell高度,(有配图,无配图)微博案例
  3. poj2236(并查集)
  4. jQuery Raion, Select, CheckBox selector function
  5. 重新想象 Windows 8 Store Apps (37) - 契约: Settings Contract
  6. C++中new的解说
  7. 小心!#define max(a,b) a&gt;b?a:b
  8. Dungeon Master(poj 2251)
  9. StringBuffer工具类整理(一)
  10. 关于 viewport meta
  11. 将String类型的数字字符转换成int
  12. Unity使用GL画线
  13. 【转载】stm32定时器-----珍藏版
  14. hdu 5937 -- Equation(搜索)
  15. tomcat生产部署关键参数设置
  16. 使用mpvue开发小程序教程(二)
  17. ie8的input的placeholder不显示的解决bug
  18. 在VS2010中使用Git【图文】转
  19. InfluxDB1.2.4部署(centos6.8)
  20. gtk_init()

热门文章

  1. 【Python】数字与运算符
  2. 01Linux系统简介
  3. HTML &amp; CSS &amp; JavaScript 从一个表格到一个灰阶颜色表 04
  4. 【题解】[JSOI2007]字符加密
  5. Zookeeper基础理论
  6. 详解Class加载过程
  7. ubuntu1804 snort base
  8. Prometheus 入门教程(一):Prometheus 快速入门
  9. npoi 设置单元格格式
  10. centos8平台使用mpstat监控cpu