码迷,mamicode.com
首页 > 其他好文 > 详细

HUD 1251 难题统计

时间:2016-07-11 12:19:27      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

/*
这题倒是没啥难度 字典树可搞
但是吧 空间是个问题 
 开始写成这样 
 struct node
{
    int next[27],sum[27];
    bool over;
}t[maxn]; 
死活过不了 开小了er 开大了MLE
问了问wmy 很机智的说用map 管用的 然后卡空间过了
看他们用指针动态分配内存 然而我并不太会..... 
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#define maxn 480010
using namespace std;
int topt;
char s[20];
struct node
{
    map<int,int>next,sum;
    bool over;
}t[maxn];
void Add_tree()
{
    int now=0,l=strlen(s);
    for(int i=0;i<l;i++)
      {
          int x=s[i]-a+1;
          if(t[now].next[x])
            {
                t[now].sum[x]++;
                now=t[now].next[x];
          }
        else 
          {
              topt++;t[now].next[x]=topt;
              t[now].sum[x]++;now=topt;
          }
      }
}
int find_tree()
{
    int ans=0,p=0,now=0,l=strlen(s),x,pre;
    while(p<=l-1)
      {
          x=s[p]-a+1;
          if(t[now].next[x])pre=now,now=t[now].next[x],p++;
          else return 0;
      }
    return t[pre].sum[x];
}
int main()
{
    while(gets(s)&&strlen(s))Add_tree();
    while(gets(s))cout<<find_tree()<<endl;
    return 0;
}

 

HUD 1251 难题统计

标签:

原文地址:http://www.cnblogs.com/yanlifneg/p/5659491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!