题目背景

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

题目描述

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

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

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

3.全文不区分大小写。

输入输出格式

输入格式:

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

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

输出格式:

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

输入输出样例

输入样例#1:

3
love
so
much
I love you so much.
输出样例#1:

3

说明

对于所有的数据,保证1 ≤ n,m,k ≤ 100,每个单词不超过50字符,全文不超过1000字符。

按理说字符串hash应该能过,

但是就是90分,,,

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<set>
#define ull unsigned long long
using namespace std;
const int MAXN=;
int seed=;
inline void read(int &n)
{
char c=getchar();bool flag=;n=;
while(c<''||c>'') c=='-'?flag=,c=getchar():c=getchar();
while(c>=''&&c<='') n=n*+(c-),c=getchar();if(flag==)n=-n;
}
int n;
int ans=;
ull ha[MAXN];// 每一个单词的hash
char s[MAXN];
char now[MAXN];
int tot=;
ull Po[MAXN];
ull a[MAXN];
int vis[MAXN];// 判断当前单词是否用过
int l[MAXN];// 每一个单词的长度
int gethash(int l,int r)
{
return a[r]-Po[r-l+]*a[l-];
}
void calc()
{
a[]=;
for(int i=;i<=tot;i++)
a[i]=a[i-]*seed+now[i];a[]=;
for(int j=;j<=n;j++)//枚举每一个单词
if((gethash(,tot))==ha[j]&&vis[j]==)
vis[j]=,ans++; }
int main()
{
read(n);
Po[]=;
for(int i=;i<=n;i++)
Po[i]=Po[i-]*seed;
for(int i=;i<=n;i++) ha[i]=;
for(int i=;i<=n;i++)
{
scanf("%s",s+);
l[i]=strlen(s+);
for(int j=;j<=l[i];j++) if(s[j]>='a'&&s[j]<='z') s[j]=s[j]+'A'-'a';
for(int j=;j<=l[i];j++)
ha[i]=ha[i]*seed+s[j];// 每一个单词的hash
}
char c=getchar();
while(scanf("%c",&c)==)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
if(c>='a'&&c<='z')
c=c+'A'-'a';
now[++tot]=c;
}
else
{
calc();
memset(a,,sizeof(a));
if(c=='.')
memset(vis,,sizeof(vis));
tot=;
}
} printf("%d",ans);
return ;
}

P2264 情书(字符串hash90分)的更多相关文章

  1. 洛谷P2264 情书

    P2264 情书 88通过 971提交 题目提供者lin_toto 标签字符串 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 yyy快把题目改回来 噫 这题的题目好逗啊... 情书std ...

  2. Contest 20140914 Mushroom写情书 字符串雙hash 後綴數組

    0111:Mushroom写情书 查看 提交 统计 提问 总时间限制:  10000ms 内存限制:  256000kB 描述 有一天,Mushroom准备向他的GF表白,为了增加表白成功率,Mush ...

  3. 洛谷 P2264 情书

    题目背景 一封好的情书需要撰写人全身心的投入.lin_toto同学看上了可爱的卡速米想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他. 题目描述 为了帮助lin_toto,我 ...

  4. 【bzoj1014】: [JSOI2008]火星人prefix 平衡树-字符串-hash-二分

    [bzoj1014]: [JSOI2008]火星人 用平衡树维护字符串的hash 然后询问的时候二分一下就好了 /* http://www.cnblogs.com/karl07/ */ #includ ...

  5. P2264 情书 Trie匹配

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

  6. P2264 情书

    传送门 正常会想到字典树 然鹅数据怎么小直接map也能过 然后就写map暴力匹配了 毫无思维难度,毫无代码难度 注意逗号算单词分隔符,如果有句号就算另一句 同一句的单词重复出现只计算一次贡献 再开个m ...

  7. 字符串hash入门

    简单介绍一下字符串hash 相信大家对于hash都不陌生 翻译过来就是搞砸,乱搞的意思嘛 hash算法广泛应用于计算机的各类领域,像什么md5,文件效验,磁力链接 等等都会用到hash算法 在信息学奥 ...

  8. .NET面试题解析(03)-string与字符串操作

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 字符串可以说是C#开发中最常用的类型了,也是对系统性能影响很关键的类型,熟练掌握字符串的操作非常重要. 常 ...

  9. 数组排序,字符串math,replace练习

    1. 关于数组排序     排序一直是程序设计中的热门话题.在js中,数组有个sort()方法.在不传参数默认情况下,数组的sort()方法原理是:对数每项调用toString()方法,比较字符串按升 ...

随机推荐

  1. oracle 10g/11g 命令对照,日志文件夹对照

     oracle 10g/11g  命令对照,日志文件夹对照 oracle 11g 中不再建议使用的命令 Deprecated Command Replacement Commands crs_st ...

  2. php利用msqli访问数据库并实现分页,

    <?php require_once 'login.php'; $num_rec_per_page=2; // 每页显示数量 //mysql_connect('localhost','jim', ...

  3. [JZOJ NOIP2018模拟10.20 B组]

    T1:原根(math) 题目链接: http://172.16.0.132/senior/#contest/show/2532/0 题目: 题解: 一个数m原根的个数是$\phi{(\phi{(m)} ...

  4. [JZOJ 5895] [NOIP2018模拟10.5] 旅游 解题报告 (欧拉回路+最小生成树)

    题目链接: https://jzoj.net/senior/#main/show/5895 题目: 题解: 有一个好像比较显然的性质,就是每条边最多经过两次 那么我们考虑哪些边需要经过两次.我们把需要 ...

  5. xBIM 高级01 IFC多模型合并

    系列目录    [已更新最新开发文章,点击查看详细]  多模型合并可以实现以下功能: 覆盖多个模型以表现得像一个模型 统一访问数据,就像它是单个模型一样 只读.要修改模型的内容,您必须使用特定模型 不 ...

  6. SpringMVC(二) 参数绑定 与 JSON

    参数绑定 http请求传输的参数都是String类型,但是Hanlder业务方法中的参数都是我们指定的数据类型,如int,Object等,所以需要处理参数的类型转换.此项工作不需要我们开发人员去完成, ...

  7. HDU 1892 See you~ 【 二维树状数组 】

    题意:二维的树状数组注意的有三个地方,输入进去的坐标都加1,防止lowbit(0) + 0造成死循环还有就是询问矩形面积的时候,输入进去的x1,x2,y1,y2,可能不是正对角线,要转化成正对角线 初 ...

  8. 《Unix环境高级编程》读书笔记 第10章-信号

    1.引言 信号是软件中断. 信号提供了一种处理异步事件的方法. 2. 信号概念 信号的名字都是以3个字符SIG开头. Linux3.2.0支持31种信号.FreeBSD.Linux和Solaris作为 ...

  9. Site Isolation Design Document

    This design document covers technical information about how Site Isolation is built.  For a general ...

  10. Ncomputering 安装及参数设置

    1.加域 2.添加用户:系统属性---远程