hdu1251统计难题

来源:互联网 发布:javascript动态效果图 编辑:程序博客网 时间:2024/06/05 11:24

只想说句空间被狗日了。。。。。

/*****************************************Author      :Crazy_AC(JamesQi)Time        :2016File Name   :*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <climits>using namespace std;#define MEM(x,y) memset(x, y,sizeof x)#define pk push_backtypedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;typedef pair<ii,int> iii;const double eps = 1e-10;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;const int maxn = 1000005;const int maxm = 26;struct Tire {int num;int g[maxn][maxm];int val[maxn];void init();int getid(char c);void insert(char *s);int find(char *s);}solve;void Tire::init() {num = 1;val[0] = 0;memset(g[0], 0,sizeof g[0]);}int Tire::getid(char c) {return c - 'a';}int Tire::find(char *s) {int u = 0;int len = strlen(s);for (int i = 0;i < len;++i) {int id = getid(s[i]);if (g[u][id] == 0) return 0;u = g[u][id];}return val[u];}void Tire::insert(char *s) {int u = 0;int len =strlen(s);for (int i = 0;i < len;++i) {int id = getid(s[i]);if (g[u][id] == 0) {val[num] = 0;memset(g[num],0,sizeof g[num]);g[u][id] = num++;}u = g[u][id];val[u]++;}}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);char s[11];solve.init();while(gets(s) && strcmp(s, ""))solve.insert(s);while(gets(s))printf("%d\n", solve.find(s));return 0;}


0 0
原创粉丝点击