2017第六次多校联合hdu6103
来源:互联网 发布:淘宝客服旺旺怎么联系 编辑:程序博客网 时间:2024/06/05 17:09
题目
题意还是比较好理解的,就是求小于所给m的最大dis的子串最大长度。
题解:首先正方向枚举每一个点,固定这个点作为开始的左边界。然后分别从这个左边界和最后一个点开始拿,直到dis>m,这时候更新长度最大值,然后把已经前面已经拿的点减去,直到dis
#include<bits/stdc++.h>using namespace std;const int maxn=5000+100;char s[maxn],a[maxn];int main(){ int t; //freopen("data.in","r",stdin); scanf("%d",&t); while(t--) { int n; scanf("%d",&n); memset(s,0,sizeof s); memset(a,0,sizeof a); scanf("%s",s); int l=strlen(s); int mount=0; for(int i=l-1;i>=0;i--) { a[i]=s[mount++]; } int ans=-1,dis=0; for(int i=0;i<l;i++) { int r=l-1,dis=0; int pl=i,pr=r,sum=0; for(int j=i;j<r;j++,r--) { dis+=abs(a[j]-a[r]); sum++; while(j<r&&dis>n) { dis-=abs(a[pl++]-a[pr--]); sum--; } ans=max(ans,sum); } ans=max(ans,sum); } for(int i=0;i<l;i++) { int r=l-1,dis=0;int pl=i,pr=r,sum=0; for(int j=i;j<r;j++,r--) { dis+=abs(s[j]-s[r]); sum++; while(j<r&&dis>n) { dis-=abs(s[pl++]-s[pr--]); sum--; } ans=max(ans,sum); } ans=max(ans,sum); } printf("%d\n",ans); }}
阅读全文
0 0
- 2017第六次多校联合hdu6103
- hdu6103 尺取 双指针 2017多校第六场1008
- HDU6103
- HDU6103
- hdu6103
- HDU6103
- hdu6103
- Hdu6103 Kirinriki(2017多校第6场)
- hdu6103 Kirinriki 2017多校1008 尺取法
- 2017多校联合第六场1008/hdu 6103
- 2017年多校联合训练 第六场(福州大学)
- 2017多校训练6-1008:Kirinriki(HDU6103)
- hdu6103-Kirinriki (2017杭电多校联赛第6场)
- HDU6103---Kirinriki(2017多校联赛:滑动窗)
- hdu6103-2017多校6&尺取法|思维-Kirinriki
- hdu6103-暴力
- HDU6103(枚举)
- HDU6103-Kirinriki
- 某安全浏览器竟然也被查出高危漏洞?开源安全问题不容忽视
- C#人脸识别入门篇-STEP BY STEP人脸识别—静态照片人脸检测
- 【python StringIO模块】感受内存文件的速度优势
- javaMail
- spark之3:安装部署
- 2017第六次多校联合hdu6103
- SPRING 启动加载BEAN 的代码过程
- sql优化
- spark之2:原理介绍
- 《信号与系统学习笔记》—信号与系统(三)
- H
- 2017.8.11 亚瑟王 失败总结
- 使用Android studio写代码时常碰到的错误
- 二维凸包 Graham's Scan