Background

一封好的情书需要撰写人全身心的投入。CYY同学看上了可爱的c**想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他。

Description

为了帮助CYY,我们定义一个量化情书好坏的标准感动值。判断感动值的方法如下:

1.在情书的一句话中若含有给定词汇列表中的特定单词,则感动值加1,但每一单词在同一句话中出现多次感动值不叠加,不同单词不受影响。保证输入的单词不重复。

2.每句话以英文句号定界。

3.全文不区分大小写。

Input

第一行包含一个数字n,表示导致感动值提升的词汇列表中单词的数量,随后n行是给定单词,每行一个。保证单词只包含英文字母。

最后一行为情书正文,保证只包含以下几种字符: 英文字母、数字、空格、英文逗号、英文句号。

Output

一个数字g,表示情书带来的感动值。

这题先要读清题好吧 emm。

每一单词在同一句话中出现多次,感动值不增加.

这个同一句话就是严格的同一句话.就是遇到'.'才算一句话。

还记得我当年写情书的时候,那时候.....

我们用\(Trie\)树来解决这一个匹配问题.

"为什么不用\(AC\)自动机",

"我太弱了 ,用不来。

因此,我用了\(Trie\)树.

我们对\(n\)个串构建\(Trie\)树.

对于情书中的,遇到一个标点符号(题目中的,空格,逗号,句号)就查询一次.

判断是否重复出现,就标记某个单词之前出现在哪个句子中即可.

我们每遇到一个句号,就将句子数量\(++\)。

统计答案的时候判断\(val[u]==cnt\)即可。

如果相同,那他们就在同一个句子中,\(return \ false\)

PS:返回\(true\)的条件还有,这个单词在\(Trie\)树中出现过.

读入很毒瘤!!!

样例没出但是A了QWQ

代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#define R register using namespace std; const int maxn=5008; inline void in(int &x)
{
int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
} int idx,val[maxn*15],ans,cnt=1,n,len; char tri[maxn*15][26],s[maxn]; inline void insert(R char *s,R int len)
{
R int u=0;
for(R int i=1;i<=len;i++)
{
R int v=s[i]-'a';
if(!tri[u][v])tri[u][v]=++idx;
u=tri[u][v];
}
val[u]=20011003;
} inline bool query(R char *s,R int len)
{
R int u=0;
for(R int i=1;i<=len;i++)
{
R int v=s[i]-'a';
if(!tri[u][v] or s[i]>'z' or s[i]<'a')
return false;
u=tri[u][v];
}
if(val[u]!=cnt and val[u])
{
val[u]=cnt;
return true;
}
return false;
} int main()
{
in(n);
char c;
for(R int i=1;i<=n;i++)
{
len=0;
while((c=getchar())!='\n' and c!=' ')
{
if(c>='A' and c<='Z')c=c-'A'+'a';
s[++len]=c;
}
insert(s,len);
}
len=0;
while((c=getchar())!=EOF)
{
if(c==' ' or c=='.' or c==',')
{
if(query(s,len))ans++;
len=0;
cnt=cnt+(c=='.');
continue;
}
if(c>='A' and c<='Z')c=c-'A'+'a';
s[++len]=c;
}
if(query(s,len)) ans++;
printf("%d",ans);
}

Trie树【p2264】情书的更多相关文章

  1. P2264 情书 Trie匹配

    \(\color{#0066ff}{题目描述}\) 为了帮助CYY,我们定义一个量化情书好坏的标准感动值.判断感动值的方法如下: 1.在情书的一句话中若含有给定词汇列表中的特定单词,则感动值加1,但每 ...

  2. Trie树入门

    Trie树入门 貌似很多人会认为\(Trie\)是字符串类型,但是这是数据结构!!!. 详情见度娘 下面开始进入正题. PS:本文章所有代码未经编译,有错误还请大家指出. 引入 先来看一个问题 ​ 给 ...

  3. 基于trie树做一个ac自动机

    基于trie树做一个ac自动机 #!/usr/bin/python # -*- coding: utf-8 -*- class Node: def __init__(self): self.value ...

  4. 基于trie树的具有联想功能的文本编辑器

    之前的软件设计与开发实践课程中,自己构思的大作业题目.做的具有核心功能,但是还欠缺边边角角的小功能和持久化数据结构,先放出来,有机会一点点改.github:https://github.com/chu ...

  5. hihocoder-1014 Trie树

    hihocoder 1014 : Trie树 link: https://hihocoder.com/problemset/problem/1014 题意: 实现Trie树,实现对单词的快速统计. # ...

  6. 洛谷P2412 查单词 [trie树 RMQ]

    题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西. 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个单词表,包含N个单词 ...

  7. 通过trie树实现单词自动补全

    /** * 实现单词补全功能 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #incl ...

  8. #1014 Trie树

    本题主要是求构造一棵Trie树,即词典树用于统计单词. C#代码如下: using System; using System.Collections.Generic; using System.Lin ...

  9. Trie树-字典查找

    描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题: ...

随机推荐

  1. 9.python爬虫--pyspider

    pyspider简介 PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI.采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项 ...

  2. UITableView的代理方法

    一.点击某个cell调用 /** * 点击了第几行调用 */ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NS ...

  3. 超详细的Java面试题总结(三)之Java集合篇常见问题

    List,Set,Map三者的区别及总结 List:对付顺序的好帮手 List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set:注重独一无二的性质 不允许重复的集合.不会有多个元 ...

  4. Fire! (双bfs+预处理)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. HDU 1422 重温世界杯 (dp)

    题目链接 Problem Description 世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们的债,捧起了大力神杯,成就了4星意大利. 世界杯虽然结束了,但是这界世界杯给我们还是留下许多值 ...

  6. 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

    1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...

  7. OnLoad & DOMReady

    window.onload 事件会在页面或图像加载完成后立即触发(即所有元素的资源都下载完毕).如果页面上有许多图片.音乐或falsh,onload事件会迟迟无法触发.所以出现了DOM Ready事件 ...

  8. zuul进行rate limit

    maven <dependency> <groupId>com.marcosbarbero.cloud</groupId> <artifactId>sp ...

  9. 关于might_sleep的一点说明【转】

    转自:http://blog.csdn.net/chen_chuang_/article/details/48462575 这个函数我在看代码时基本上是直接忽略的(因为我知道它实际上不干什么事),不过 ...

  10. uoj#35 后缀排序(后缀数组模版)

    #include<bits/stdc++.h> #define N 100005 using namespace std; char s[N]; int a[N],c[N],t1[N],t ...