概述
先简单介绍下尺取法
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 尺取还是挺好用的所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复