P2264 情书(字符串hash90分)
题目背景
一封好的情书需要撰写人全身心的投入。lin_toto同学看上了可爱的卡速米想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他。
题目描述
为了帮助lin_toto,我们定义一个量化情书好坏的标准感动值。判断感动值的方法如下:
1.在情书的一句话中若含有给定词汇列表中的特定单词,则感动值加1,但每一单词在同一句话中出现多次感动值不叠加,不同单词不受影响。保证输入的单词不重复。
2.每句话以英文句号定界。
3.全文不区分大小写。
输入输出格式
输入格式:
第一行包含一个数字n,表示导致感动值提升的词汇列表中单词的数量,随后n行是给定单词,每行一个。保证单词只包含英文字母。
最后一行为情书正文,保证只包含以下几种字符: 英文字母、数字、空格、英文逗号、英文句号。
输出格式:
一个数字g,表示情书带来的感动值。
输入输出样例
3
love
so
much
I love you so much.
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分)的更多相关文章
- 洛谷P2264 情书
P2264 情书 88通过 971提交 题目提供者lin_toto 标签字符串 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 yyy快把题目改回来 噫 这题的题目好逗啊... 情书std ...
- Contest 20140914 Mushroom写情书 字符串雙hash 後綴數組
0111:Mushroom写情书 查看 提交 统计 提问 总时间限制: 10000ms 内存限制: 256000kB 描述 有一天,Mushroom准备向他的GF表白,为了增加表白成功率,Mush ...
- 洛谷 P2264 情书
题目背景 一封好的情书需要撰写人全身心的投入.lin_toto同学看上了可爱的卡速米想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他. 题目描述 为了帮助lin_toto,我 ...
- 【bzoj1014】: [JSOI2008]火星人prefix 平衡树-字符串-hash-二分
[bzoj1014]: [JSOI2008]火星人 用平衡树维护字符串的hash 然后询问的时候二分一下就好了 /* http://www.cnblogs.com/karl07/ */ #includ ...
- P2264 情书 Trie匹配
\(\color{#0066ff}{题目描述}\) 为了帮助CYY,我们定义一个量化情书好坏的标准感动值.判断感动值的方法如下: 1.在情书的一句话中若含有给定词汇列表中的特定单词,则感动值加1,但每 ...
- P2264 情书
传送门 正常会想到字典树 然鹅数据怎么小直接map也能过 然后就写map暴力匹配了 毫无思维难度,毫无代码难度 注意逗号算单词分隔符,如果有句号就算另一句 同一句的单词重复出现只计算一次贡献 再开个m ...
- 字符串hash入门
简单介绍一下字符串hash 相信大家对于hash都不陌生 翻译过来就是搞砸,乱搞的意思嘛 hash算法广泛应用于计算机的各类领域,像什么md5,文件效验,磁力链接 等等都会用到hash算法 在信息学奥 ...
- .NET面试题解析(03)-string与字符串操作
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 字符串可以说是C#开发中最常用的类型了,也是对系统性能影响很关键的类型,熟练掌握字符串的操作非常重要. 常 ...
- 数组排序,字符串math,replace练习
1. 关于数组排序 排序一直是程序设计中的热门话题.在js中,数组有个sort()方法.在不传参数默认情况下,数组的sort()方法原理是:对数每项调用toString()方法,比较字符串按升 ...
随机推荐
- NHibernate3剖析:Query篇之NHibernate.Linq增强查询
系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种 ...
- node 命令行输入控件 prompt.js
function print(){ console.log.apply(console , arguments) } var step ,_lstStp ,_onConfirmInput ,_ ...
- javascript 简单语法 对象属性及方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Hibernate 与mybatis的区别
转自:https://blog.csdn.net/julinfeng/article/details/19821923 为方便以后准备面试,把一些常用的技术整理出来,会不定期更新. 首先简单介绍下两者 ...
- xBIM 基础11 WeXplorer 常用事件
系列目录 [已更新最新开发文章,点击查看详细] 本篇将介绍查看器在不同场合触发的事件.所有这些都记录在xViewer中. 如果您从Web服务器运行本教程,可以在此处查看完整的实例.并且确保您的 ...
- android实现自动安装
安装: String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDire ...
- SharePoint 网站中定义的页面背景图片不起作用
If you are working on custom SharePoint 2013 master pages, designs and/or CSS, these little CSS clas ...
- 如何让一台IIS服务器实现多个网站https访问
找到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslSniBindingInfo,将注册表值改 ...
- System.IO.FileLoadException异常
未能加载文件或程序集“NHibernate, Version=4.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4”或它的某一个依赖 ...
- python 3.x 学习笔记11 (静态、类、属性、特殊成员方法)
1.静态方法通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法.静态方法是不可以访问实例变量或类变量的即没有self,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什 ...