迷之好奇
来源:互联网 发布:股东大会网络投票平台 编辑:程序博客网 时间:2024/04/29 23:43
Time Limit: 2000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
FF得到了一个有n个数字的集合。不要问我为什么,有钱,任性。
FF很好奇的想知道,对于数字x,集合中有多少个数字可以在x前面添加任意数字得到。
如,x = 123,则在x前面添加数字可以得到4123,5123等。
输入
多组输入。
对于每组数据
首先输入n(1<= n <= 100000)。
接下来n行。每行一个数字y(1 <= y <= 100000)代表集合中的元素。
接下来一行输入m(1 <= m <= 100000),代表有m次询问。
接下来的m行。
每行一个正整数x(1 <= x <= 100000)。
输出
对于每组数据,输出一个数字代表答案。
示例输入
312345666661235634512345356
示例输出
101
提示
来源
zmx
示例程序
#include <iostream>#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<stack>#include<algorithm>#define N 500010using namespace std;struct node{ int cont; int next[10];} head[N];int top;char s[11];int creat(){ head[top].cont=0; memset(head[top].next,-1,sizeof(head[top].next)); return top++;}void build(int p){ int j,len=strlen(s); for(int i=len-1; i>=0; i--) { j=s[i]-'0'; if(head[p].next[j]==-1) head[p].next[j]=creat(); head[p].cont++; p=head[p].next[j]; }}int Query(int p){ int j,len=strlen(s); for(int i=len-1; i>=0; i--) { j=s[i]-'0'; if(head[p].next[j]==-1) return 0; p=head[p].next[j]; } return head[p].cont;}int main(){ int m,n; int rt; while(~scanf("%d",&n)) { top=0; rt=creat(); for(int i=0; i<n; i++) { scanf("%s",s); build(rt); } scanf("%d",&m); while(m--) { scanf("%s",s); printf("%d\n",Query(rt)); } } return 0;}
0 0
- SDUT 迷之好奇
- 迷之好奇
- 迷之好奇
- 迷之好奇
- sdutacm-迷之好奇
- 迷之好奇
- 迷之好奇 SDUTOJ 3039
- SDUT 3039 迷之好奇(哈希)
- 迷之好奇 —静态字典树
- SDUT_3039 迷之好奇 【字典树】
- SDUTOJ 3039 迷之好奇 静态字典树
- 好奇!
- 好奇
- Android好奇之旅 环境搭建及Helloworld的诞生
- 好奇啊!
- 好奇害死马
- 好奇.新鲜
- 好奇号
- poj 1258 Agri-Net(Prim)(基础)
- PAT (Advanced Level) 1014. Waiting in Line (30) 银行排队
- ListView 和 Adapter 的基础
- [dfs]poj1979 Red and Black
- Oracle错误代码一览表--出了问题可以来此处查询
- 迷之好奇
- 东华软件面试题
- 剑指off-找到最小k个数字
- OC中字符串用法总结
- hbase-0.94安装方法详解
- memcpy内存对齐访问
- C++那些细节--中operator=相关问题
- POJ1107
- OC_字符串 NSString 的比较重要的方法用法介绍