• HDU 6103 Kirinriki(尺取法)


    http://acm.hdu.edu.cn/showproblem.php?pid=6103

    题意:

    给出一个字符串,在其中找两串互不重叠的子串,计算它们之间的dis值,要求dis值小于等于m,求能选的子串的最大长度。

    思路:

    由于这两个子串是互不重叠的,那么这两个子串之间的间隔可以是奇数也可以是偶数,针对这两种情况我们枚举中心点,然后尺取法处理,具体看代码就懂了。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<sstream>
     6 #include<vector>
     7 #include<stack>
     8 #include<queue>
     9 #include<cmath>
    10 #include<map>
    11 #include<set>
    12 using namespace std;
    13 typedef long long ll;
    14 typedef pair<int,ll> pll;
    15 const int INF = 0x3f3f3f3f;
    16 const int maxn=5000+5;
    17 
    18 int n, m;
    19 int cnt;
    20 int ans;
    21 char s[maxn];
    22 int tmp[maxn];
    23 
    24 void check()
    25 {
    26     int l=0,r=0;
    27     int dis=0;
    28     while(r<cnt)
    29     {
    30         dis+=tmp[++r];
    31         while(dis>m)   dis-=tmp[++l];
    32         ans=max(ans,r-l);
    33     }
    34 }
    35 
    36 int main()
    37 {
    38     //freopen("in.txt","r",stdin);
    39     int T;
    40     scanf("%d",&T);
    41     while(T--)
    42     {
    43         scanf("%d",&m);
    44         scanf("%s",s+1);
    45         n=strlen(s+1);
    46 
    47         ans=0;
    48         for(int i=1;i<=n;i++)  //中间相隔奇数
    49         {
    50             int l=i-1,r=i+1;
    51             cnt=0;
    52             while(l>0 && r<=n)  {tmp[++cnt]=abs(s[l]-s[r]);l--;r++;}
    53             check();
    54         }
    55 
    56         for(int i=1;i<=n;i++) //中间相隔偶数
    57         {
    58             int l=i,r=i+1;
    59             cnt=0;
    60             while(l>0 && r<=n)  {tmp[++cnt]=abs(s[l]-s[r]);l--;r++;}
    61             check();
    62         }
    63 
    64         printf("%d
    ",ans);
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    Android自己主动升级框架
    一句话说清楚啥是delegate
    C#
    MySQL Community Server 5.6和MySQL Installer 5.6
    仿htc sense的弹性listView!
    双向队列(STL做法)
    余承东:未来5年中国大部分智能手机厂商消失
    P3808 【模版】AC自动机(简单版)
    P1103 书本整理
    P2580 于是他错误的点名开始了
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/7341303.html
Copyright © 2020-2023  润新知