**链接 : ** Here!

**思路 : ** Trie树裸题, 由开始给出的名字建一棵字典树, 然后每次查询一下抢♂劫的人名是否在字典树中, 复杂度也不清楚是多少, 反正是没给出 $M$ 的范围, 开始时用 $hash$ 做, $T$ 了, 分析一下也可以知道为什么 $T$, 因为对于不在富豪列表中的人, 还得跑一遍 $hash$ 函数, 这样的话每次就得执行 $strlen(NotRichName)$ 很浪费时间, 但是在 $Trie$ 树中直接 $1$ 次就能判定了, 所以对于这道题 $Trie树$ 不会 $T$.


/*************************************************************************
> File Name: t22.cpp
> Author:
> Mail:
> Created Time: 2017年11月24日 星期五 17时05分20秒
************************************************************************/ #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int MAX_N = 1e8 + 2;
typedef long long ll;
const int SIZE = 30;
int n, m, x;
char str[MAX_N]; typedef struct TNode {
int is_terminal;
struct TNode **childs;
} TNode, *root; TNode* new_node() {
TNode *p = (TNode *)malloc(sizeof(TNode));
p->childs = (TNode **)malloc(sizeof(TNode *) * SIZE);
memset(p->childs, 0, sizeof(TNode *) * SIZE);
p->is_terminal = -1;
return p;
} void clear(TNode *p) {
if (!p) return;
for (int i = 0 ; i < SIZE ; ++i) {
clear(p->childs[i]);
}
free(p->childs);
free(p);
} void insert(TNode *node, char *pattern, int x) {
TNode *p = node;
for (int i = 0 ; pattern[i] ; ++i) {
if (p->childs[pattern[i] - 'a'] == NULL) {
p->childs[pattern[i] - 'a'] = new_node();
}
p = p->childs[pattern[i] - 'a'];
}
p->is_terminal = x;
} int find(TNode *node, char *pattern) {
TNode *p = node;
for (int i = 0 ; pattern[i] ; ++i) {
if (p->childs[pattern[i] - 'a'] == NULL) {
return -1;
}
p = p->childs[pattern[i] - 'a'];
}
return p->is_terminal;
} int main() {
TNode *root = new_node();
scanf("%d", &n);
for (int i = 0 ; i < n ; ++i) {
getchar();
scanf("%s%d", str, &x);
insert(root, str, x);
}
scanf("%d", &m);
for (int i = 0 ; i < m ; ++i) {
int flag = 1;
scanf("%d", &x);
ll ans = 0;
for (int j = 0 ; j < x ; ++j) {
getchar();
scanf("%s", str);
if (flag == 0) continue;
int ret = find(root, str);
if (ret == -1) flag = 0;
ans += (ll)ret;
}
printf("%lld\n", flag == 0 ? -1 : ans);
}
clear(root);
return 0;
}

最新文章

  1. Django form
  2. 利用Bootstrap快速搭建个人响应式主页(附演示+源码)
  3. Javascript学习笔记:3种递归函数中调用自身的写法
  4. Apache Spark-1.0.1集群搭建
  5. Comon.Logging与Log4net联合使用
  6. [HDOJ5289]Assignment(RMQ,二分)
  7. Sqli-labs less 37
  8. ios-异步消息同步问题-典型使用场景: 微信私信界面
  9. SQLServer 复制和数据库镜像 具体配置部署
  10. Javascript学习十
  11. Snapman设计中的思考
  12. 虚拟机linux系统明明已经安装了ubuntu,但是每次重新进入就又是选择安装界面
  13. .NET MVC 过滤器使用
  14. 【开发工具】secureCRT的使用
  15. BZOJ2157旅游——树链剖分+线段树
  16. AS3.0:给图片添加滤镜模糊与斜角效果
  17. [工具] 知网(CNKI)文献下载工具
  18. js随笔记录
  19. mysql 修改语句及耗时
  20. sql 2012之后分页查询速度问题

热门文章

  1. HDU 5305 Friends(dfs)
  2. Android Studio最新配置教程2016
  3. 【转载】java学习线路
  4. JavaScript Patterns 2.5 (Not) Augmenting Build-in Prototypes
  5. 【HDU 1007】 Quoit Design
  6. SpringMVC+MyBaties关于上传(跟新)图片的问题
  7. P1452 Beauty Contest
  8. SpringCloud服务组合
  9. Objective-C copy(转)
  10. 【洛谷4158/BZOJ1296】[SCOI2009]粉刷匠(动态规划)