首先可以证明,一定存在一种最优解,每次选择的区间结尾都是 \(n\)。因为如果某一个区间结尾不是 \(n\),将其替换成 \(n\) 仍然保持单调不下降。接着都按这个策略拔高玉米。

令 \(f_{i,j}\) 表示 \(1\sim i\) 这段前缀进行了 \(j\) 次操作,第 \(\boldsymbol{i}\) 株玉米不被拔掉,所能剩下最多的玉米。

\[f_{i,j}=\max\left\{f_{p,q}\left|\right.p<i,q\leq j,a_p+q\leq a_i+j\right\}+1
\]

枚举 \(i\),剩下两个限制用二维树状数组维护即可。

有一个小细节,操作次数可能为 \(0\),扔进树状数组时需要加 \(1\)。

时间复杂度 \(O(nk\log k\log a)\)。

code:

#include<bits/stdc++.h>
using namespace std;
#define Max(x,y)((x)>(y)?x:y)
#define For(i,x,y)for(i=x;i<=(y);i++)
#define Down(i,x,y)for(i=x;i>=(y);i--)
#define lowbit(x)((x)&-(x))
int c[505][5505],a[10005],k,mx;
int sum(int x,int tmp)
{
int y,res=0;
while(x)
{
y=tmp;
while(y)res=Max(c[x][y],res),y-=lowbit(y);
x-=lowbit(x);
}
return res;
}
void add(int x,int tmp,int z)
{
int y;
while(x<=k+1)
{
y=tmp;
while(y<=mx+k)c[x][y]=Max(c[x][y],z),y+=lowbit(y);
x+=lowbit(x);
}
}
int main()
{
int n,i,j,tot,ans=0;
scanf("%d%d",&n,&k);
For(i,1,n)scanf("%d",&a[i]),mx=Max(mx,a[i]);
For(i,1,n)
Down(j,k,0)
{
tot=sum(j+1,a[i]+j)+1;
add(j+1,a[i]+j,tot);
ans=Max(ans,tot);
}
printf("%d",ans);
return 0;
}

最新文章

  1. 等差数列(bzoj 3357)
  2. Java子类属性继承父类属性
  3. An internal error occured during :&quot;C/C++&quot; . java.lang.NullPointerException
  4. The prefix &quot;mx&quot; for element &quot;mx:WindowedApplication&quot; is not bound.
  5. VB6 GDI+ 入门教程[9] Bitmap魔法(2):数据读写
  6. java类中serialversionuid 作用 是什么?举个例子说明
  7. [ionic开源项目教程] - 第7讲 实现下拉刷新上拉加载ion-refresher和ion-infinite-scroll
  8. UVa 10256 - The Great Divide 判断凸包相交
  9. 什么是Cocos2d-x
  10. 插件使用总结-jquery.pin.js
  11. Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分
  12. java线程学习(二)
  13. iOS 指纹解锁 验证TouchID
  14. IO流--字符流与字节流--File类常用功能
  15. SSM框架整合思想
  16. Jenkins创建job时Check-out Strategy各个选项详细说明(含图)
  17. amoeba_mysql 读写分离
  18. 第9章 符合Python风格的对象
  19. linux centos挂载数据盘教程
  20. webapck 速度优化策略

热门文章

  1. 【论文阅读】An Anchor-Free Region Proposal Network for Faster R-CNN based Text Detection Approaches
  2. 【API进阶之路】API带来的微创新,打动投资人鼓励我创业
  3. ValueError: Unknown label type: &#39;continuous&#39;
  4. 辨析:IIR(Infinite Impulse Response)与FIR(Finite Impulse Response)
  5. Dcoker 安装 rabbitMq
  6. 常见特征金字塔网络FPN及变体
  7. php 之批量生成 mysql 语句 注释
  8. Windows平台Python Pyramid实战从入门到进阶:第一个服务
  9. mysql between and 是[a,b]闭区间
  10. 利用移动硬盘安装windows7系统