POJ 1200 Crazy Search(HASH)

来源:互联网 发布:淘宝客服晚班可在家上 编辑:程序博客网 时间:2024/05/08 19:27

请不要随便指点别人该怎么做、每个人的人生都应该自己掌握、你给不了别人一切、你也不懂别人的忧伤、

                                                                                          微笑不代表快乐、哭泣不一定悲伤

               不努力怎么让关心你的人幸福、不努力怎么让看不起你的人绝望、

                                                                                                                                    

                                                                                                                                                              我用生命在奋斗——lx_Zz

—————————————————————————————————————————————————————————————

—————————————————————————    华丽的分割线    ————————————————————————————

—————————————————————————————————————————————————————————————

12857431lx_Zz1200Accepted64024K125MSG++1009B2014-05-09 21:00:43

转化为M进制之后、对应HASH查找、

/* 题目: POJ 1200    *//* 作者: lx_Zz       *//* 时间: 2014.5.9    */#include<cstdio>#include<queue>#include<vector>#include<map>#include<string>#include<iostream>#include<cmath>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;#define INF 0x7fffffff#define LL __int64const int maxn=16000005;char str[maxn];int dp[256];int vis[maxn];int main(){    //freopen("C:\\Users\\终将我要华丽的逆袭\\Desktop\\lx_Zz_in.txt","r",stdin);    //freopen("C:\\Users\\终将我要华丽的逆袭\\Desktop\\lx_Zz_out.txt","w",stdout);int n,m;memset(dp,0,sizeof(dp));memset(vis,0,sizeof(vis));scanf("%d%d",&n,&m);scanf("%s",str);int len=strlen(str);int cnt=0;for(int i=0;i<len;i++){if(dp[str[i]]==0){dp[str[i]]=++cnt;}}int ans=0;for(int i=0;i<=len-n;i++){int sum=0;for(int j=i;j<i+n;j++){sum=sum*m+dp[str[j]]-1;}if(vis[sum]==0){ans++;vis[sum]=1;}}printf("%d\n",ans);    return 0;}


0 0
原创粉丝点击