我是靠谱客的博主 凶狠果汁,最近开发中收集的这篇文章主要介绍hdu 5672 尺取还是挺好用的,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先简单介绍下尺取法

http://blog.chinaunix.net/uid-24922718-id-4848418.html

尺取法就是在卡给定条件的时候 不断的改变下标 起点 终点

#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    int t,k,j,vis[27];
    char a[1000005];
    cin>>t;
    while(t--)
    {
        scanf("%s",&a);
        scanf("%d",&k); 
        int l=0,temp,num=0,i=0;
        long long int ans=0;
        memset(vis,0,sizeof(vis));
        int len=strlen(a);
        while(l<=i&&l<len)
        {
            while(i<len&&num<k)
           {
                temp=a[i++]-'a';
                if(vis[temp]==0) num++;
                vis[temp]++;
           }
           if(num<k) break;
           ans+=(len-i+1);
           temp=a[l]-'a';
           vis[temp]--;
           if(vis[temp]==0) num--;
           l++;
        }
        printf("%I64dn",ans);
    }
    return 0;
}

 

最后就这道题目来说说吧 两个点吧

1.这里的要求是不同的字母数 可以用标记数组实现(注意在挪起点的时候 要对标记数组进行处理)

2.题目要求的是所有subquence的个数那么 在爬出最简单的时候 后面的一些就是需要增加的

转载于:https://www.cnblogs.com/z1141000271/p/5727102.html

最后

以上就是凶狠果汁为你收集整理的hdu 5672 尺取还是挺好用的的全部内容,希望文章能够帮你解决hdu 5672 尺取还是挺好用的所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部