两个等长字符串A,B的距离被定义为

给你一个字符串,问你对于所有长度相等的不相交子串对,其距离不超过m的前提下,最长的长度是多少。

枚举对称轴,两侧先贪心地扩展到最长,超过m之后,再缩短靠近对称轴的端点,如此反复进行,每次更新答案的时候,都用的是当前“近对称轴端点”固定时的最长值。

复杂度O(n^2)。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int Abs(int x){
return x<0 ? (-x) : x;
}
int T,m,n;
char a[5005];
int main(){
scanf("%d",&T);
for(;T;--T){
int ans=0;
scanf("%d%s",&m,a+1);
n=strlen(a+1);
for(int i=1;i<n;++i){
if(i==6){
i=6;
}
int sum=0;
int p1=i,p2=i+1,q1=i,q2=i+1;
while(p1>=1 && p2<=n){
while(sum<=m && p1>=1 && p2<=n){
sum+=Abs(a[p1]-a[p2]);
if(sum<=m){
ans=max(ans,q1-p1+1);
}
--p1;
++p2;
}
while(sum>m){
sum-=Abs(a[q1]-a[q2]);
--q1;
++q2;
if(sum<=m){
ans=max(ans,q1-p1);
}
}
}
}
for(int i=2;i<n;++i){
int sum=0;
int p1=i-1,p2=i+1,q1=i-1,q2=i+1;
while(p1>=1 && p2<=n){
while(sum<=m && p1>=1 && p2<=n){
sum+=Abs(a[p1]-a[p2]);
if(sum<=m){
ans=max(ans,q1-p1+1);
}
--p1;
++p2;
}
while(sum>m){
sum-=Abs(a[q1]-a[q2]);
--q1;
++q2;
if(sum<=m){
ans=max(ans,q1-p1);
}
}
}
}
printf("%d\n",ans);
}
return 0;
}

【枚举】【尺取法】hdu6103 Kirinriki的更多相关文章

  1. HDU 5358 尺取法+枚举

    题意:给一个数列,按如下公式求和. 分析:场上做的时候,傻傻以为是线段树,也没想出题者为啥出log2,就是S(i,j) 的二进制表示的位数.只能说我做题依旧太死板,让求和就按规矩求和,多考虑一下就能发 ...

  2. HDU 6103 Kirinriki(尺取法)

    http://acm.hdu.edu.cn/showproblem.php?pid=6103 题意: 给出一个字符串,在其中找两串互不重叠的子串,计算它们之间的dis值,要求dis值小于等于m,求能选 ...

  3. 2017ACM暑期多校联合训练 - Team 6 1008 HDU 6103 Kirinriki (模拟 尺取法)

    题目链接 Problem Description We define the distance of two strings A and B with same length n is disA,B= ...

  4. HDU - 6103 :Kirinriki(不错的尺取法)

    We define the distance of two strings A and B with same length n is dis A,B =∑ i=0 n−1 |A i −B n−1−i ...

  5. hdu6103[尺取法] 2017多校6

    /*hdu6103[尺取法] 2017多校6*/ #include <bits/stdc++.h> using namespace std; int T, m; ]; void solve ...

  6. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  7. 51nod-1686 第K大区间(二分+尺取法)

    题目链接: 第K大区间 基准时间限制:1 秒 空间限制:131072 KB    定义一个区间的值为其众数出现的次数.现给出n个数,求将所有区间的值排序后,第K大的值为多少. Input 第一行两个数 ...

  8. 【尺取法】Jurisdiction Disenchantment

    [尺取法]Jurisdiction Disenchantment PROBLEM 时间限制: 1 Sec 内存限制: 128 MB 题目描述 The Super League of Paragons ...

  9. 字符串----hiho字符串(尺取法)

    注意:这道题的解法和最短摘要一样,都是采用尺取法解决问题,注意这儿题目要求恰好包含,也就是说这个hiho字符串必须包含2个'h'.1个'i'和1个'o'.一个不能多,一个也不能少. import ja ...

  10. poj 2566"Bound Found"(尺取法)

    传送门 参考资料: [1]:http://www.voidcn.com/article/p-huucvank-dv.html 题意: 题意就是找一个连续的子区间,使它的和的绝对值最接近target. ...

随机推荐

  1. 启动Eclipse时,弹出failed to load the jni shared library

    JDK版本和Eclipse版本不同的问题,JDK版本为64位,Eclipse版本为32位.

  2. Java中通过方法创建一个http连接并请求(服务器间进行通信)

    服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...

  3. Opencv模块功能介绍

    本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/   站在巨 ...

  4. Style2Paints:用AI技术为线稿快速上色的工具(GitHub 3310颗星)

    python 开源项目: Style2Paints:用AI技术为线稿快速上色的工具(GitHub 3310颗星) https://github.com/lllyasviel/style2paints

  5. [New learn]动画-基于UIView

    原文:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/Ani ...

  6. java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast

    严重: Exception starting filter encodingFilterjava.lang.ClassCastException: org.springframework.web.fi ...

  7. shell中引号的作用(转)

    引号的作用 1 双引号(“”) 1)使用””可引用除字符$(美元符号).`(反引号).\(反斜线)外的任意字符或字符串.双引号不会阻止shell对这三个字符做特殊处理(标示变量名.命令替换.反斜线转义 ...

  8. jmap 查看 map 内存占用

    cmd jps查看进程id jmap -dump:format=b,file=/tmp/dump.dat   进程id eclipse安装mat http://blog.csdn.net/bohu83 ...

  9. .NET对IO的基本操作集合

    分享一下对IO的基本使用,很简单的东西,不需要记住,用的时候看一下就可以了. 个人对IO的使用很少,记录日志,保存一些数据,保存文件,其他的基本上很少用到,做商城类的项目应该会用到很多 1.先配置一下 ...

  10. iwebshop 增加页面访问次数实时

    class里面的主控制器初始化时添加如下代码 //更新页面访问次数 $siteConfig = new Config('site_config'); $sFilePath =$siteConfig-& ...