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()方法,比较字符串按升 ...
随机推荐
- 疯狂Java学习笔记(70)-----------挚爱Java
与大家分享! 挚爱Java 10个使用Java最广泛的现实领域 写好Java代码的30条经验总结 Java字符串的substring真的会引起内存泄露么? Java内存的原型及工作原理深度剖析 Jav ...
- c++ STL unique , unique_copy函数
一.unique函数 类属性算法unique的作用是从输入序列中"删除"全部相邻的反复元素. 该算法删除相邻的反复元素.然后又一次排列输入范围内的元素,而且返回一个迭代器(容器的长 ...
- AutoCompleteTextView和Spinner的使用方法
首先说明AutoCompleteTextView的使用方法.主要是起到自己主动填充的作用.输入keyword,假设存在该字便能够自己主动填充.代码例如以下 activity_main.xml < ...
- 微软版UnityVs横空出世,究竟是谁成就了谁?
在移动互联网浪潮持续发力下,手游行业也异常火热.在现在的手游行业,Unity3d无疑是最耀眼的哪颗星.一直觉得Unity面向设计师是友好的,对程序猿这边并非非常友好. 2012年用Unity时开发工具 ...
- BZOJ 3112 [Zjoi2013]防守战线 线性规划
题意: 简单叙述: 一个长度为n的序列,在每一个点建塔的费用为Ci.有m个区间.每一个区间内至少有Dj个塔.求最小花费. 方法:线性规划 解析: 与上一题相似.相同使用对偶原理解题.解法不再赘述. 代 ...
- Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 本博文介绍了MongoDB,并详细指引读者在Ubuntu下MongoDB的安装和使用.本教程在Ubuntu14.04下测试通过. 一.MongoDB介绍 MongoDB 是一个是 ...
- sql中计算百分比
sql中计算百分比:(转成字符串然后拼接%) ),) AS CHAR),'%') as aa from act_canal; 效果:
- 中文版 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 摘要 最先进的目标检测网络依靠区域提出算法 ...
- 1044 - Access denied for user 'root'@'%' to database 'xahy-blog' 解决方案二
检查 user 表中'root'@'%' 的grant的权限 select HOST,USER,Grant_priv,Super_priv from mysql.`user`; 可以看到现在这两个权限 ...
- JavaScript设计模式(biaoyansu)(2)
单例模式实例 (创建类模式): let elBalance = document.getElementById('balance') function init () { var a = new Di ...