思路:先O(n)预处理出ri[i][j],le[i][j],分别表示第i个位置向右边移动出j个空格需要的步数,表示第i个位置向左边移动出j个空格需要的步数。

然后枚举间隙处,二分判段最大间隔。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define Maxn 710
#define inf 100000000
using namespace std;
int ri[Maxn][Maxn],le[Maxn][Maxn],n,m;
char str[Maxn];
bool OK(int pos,int x)
{
int i,j,cnt=inf;
if(pos==) {
cnt=min(cnt,ri[pos][x]);
return cnt<=m;
}
for(i=;i<=n;i++){
if(i>x) break;
cnt=min(cnt,ri[pos][i]+le[pos-][x-i]);
}
//cout<<pos<<" "<<x<<" "<<cnt<<" "<<m<<endl;
return cnt<=m;
}
int main()
{
int t,i,j,ze,Ca=;
scanf("%d",&t);
while(t--){
for(i=;i<Maxn;i++){
for(j=;j<Maxn;j++){
ri[i][j]=le[i][j]=inf;
}
}
ze=;
scanf("%d%d%s",&n,&m,str);
if(str[]=='') le[][]=,ze=;
for(i=;i<n;i++){
if(str[i]=='') ze++;
for(j=;j<=n;j++){
if(le[i][j-]>=inf) break;
if(str[i]=='')
le[i+][j]=le[i][j]+j;
else
le[i+][j]=le[i][j-];
}
}
if(str[n-]=='') ri[n][]=ri[n+][]=;
for(i=n-;i>=;i--){
for(j=;j<=n;j++){
if(ri[i+][j-]>=inf) break;
if(str[i-]=='')
ri[i][j]=ri[i+][j]+j;
else
ri[i][j]=ri[i+][j-];
}
}
int f=;
int ans=,l,r,mid;
for(i=;i<=n;i++){
if(str[i-]==''){
l=;r=ze;
while(l+<r){
mid=(l+r)>>;
if(OK(i,mid))
l=mid;
else
r=mid;
}
ans=max(ans,l);
if(OK(i,r))
ans=max(ans,r);
}
}
printf("Case %d: %d\n",++Ca,ans);
}
return ;
}

最新文章

  1. LBaaS 实现机制 - 每天5分钟玩转 OpenStack(125)
  2. 分享一些不错的sql语句
  3. .NET连接SAP系统专题:BAPI_TRANSACTION_COMMIT的使用方法(十)
  4. Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
  5. 孙鑫MFC学习笔记19:动态链接库
  6. apache 日志轮询 linux cronolog
  7. Versions 出现 SVN Working Copy xxx locked
  8. Flume-ng+Kafka+storm的学习笔记
  9. 2016年11月30日 星期三 --出埃及记 Exodus 20:21
  10. CentOS6.5配置vim使支持Python
  11. 【原创】利用C++ RAII技术自动回收堆内存
  12. CentOS7添加第三方源
  13. [每日一题JS] 正则表达式
  14. 如何在Android Studio上使用Github
  15. HDU 3499 Flight spfa+dp
  16. C++多线程一
  17. Phone APP设计规范/iPad APP设计规范/Android APP设计规范/网页设计规范
  18. [Android] Android 锁屏实现与总结 (三)
  19. 关于Struts2的通配方法、转发重定向
  20. (叉乘求面积) nyoj1011-So Easy[II]

热门文章

  1. 分布式版本控制系统git
  2. python_25_string
  3. python_19_编码解码
  4. ubuntu安装R时候增加软件源到sources.list,sudo apt-get update不能更新
  5. JQuery模拟点击页面上的所有a标签,触发onclick事件
  6. OI,我的决心
  7. 基于js原生封装的点击显示完整文字
  8. JsRender (js模板引擎)
  9. ZendFramework-2.4 源代码 - 关于MVC - View层 - 控制器返回值
  10. Union found