题目背景

一封好的情书需要撰写人全身心的投入。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字符。

stl->set

这题是问句子中包含多少个感动的词 ,非常水是吧 ?

然后我萌萌的交了7次AC自动机,最高分40。。才发现 妈的这题和子串一点关系没有!

三个小时的时间啊╮(╯▽╰)╭

屠龙宝刀点击就送

#include <cstring>
#include <cstdio>
#include <queue>
#define MAXN 1000010
int size=,n,num[MAXN],trie[MAXN][],fail[MAXN];
inline void ins(int Num,char *a)
{
int p=;
for(char *q=a;*q;q++)
{
int id=*q-'A';
if(!trie[p][id]) trie[p][id]=++size;
p=trie[p][id];
}
num[p]=Num;
}
std::queue<int>q;
void build()
{
for(int i=;i<=;i++) trie[][i]=;
q.push();
for(;!q.empty();q.pop())
{
int now=q.front();
for(int i=;i<=;i++)
{
if(trie[now][i])
{
if(now==) fail[trie[now][i]]=;
else
{
int tmp=fail[now];
for(;tmp;tmp=fail[tmp])
{
if(trie[tmp][i])
{
fail[trie[now][i]]=trie[tmp][i];
break;
}
}
if(!tmp) fail[trie[now][i]]=;
}
q.push(trie[now][i]);
}
}
}
}
bool vis[MAXN];
int query(char *a,int len)
{
memset(vis,,sizeof(vis));
int p=,ans=;
for(int i=;i<len;i++)
{
int id=a[i]-'A';
for(;!trie[p][id];p=fail[p]);
p=trie[p][id];
int now=p;
for(;now;now=fail[now])
{
if(num[now]&&!vis[num[now]])
{
vis[num[now]]=;
ans++;
}
}
}
return ans;
}
int main()
{
scanf("%d",&n);
char word[],a[];
for(int i=;i<=n;i++)
{
scanf("%s",word);
for(int j=;j<strlen(word);j++)
if(word[j]>='a'&&word[j]<='z')
word[j]-=;
ins(i,word);
}
build();
int k=,ans=;
char ch=getchar();
for(;scanf("%c",&ch)==;)
{
if(ch=='\n') break;
else if(ch=='.')
ans+=query(a,k),k=;
else if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
{
if(ch>='a'&&ch<='z') a[k]=ch-;
else a[k]=ch;
k++;
}
else continue;
}
printf("%d",ans);
return ;
}

萌萌的40分AC自动机

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <string>
#include <set> using namespace std;
set<string>se,se2;
int ans,n;
int main()
{
scanf("%d",&n);
string a;
for(int i=;i<=n;i++)
{
cin>>a;
for(int i=;i<a.length();i++) if(a[i]>='a'&&a[i]<='z') a[i]-=;
se.insert(a);
}
char ch=getchar();
string b;
while(scanf("%c",&ch)==)
{
if(ch=='\n') break;
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
{
if(ch>='a'&&ch<='z')
ch=ch-;
b+=ch;
}
else
{
if(!b.empty())
{
if(se.count(b))
se2.insert(b);
b.clear();
}
if(ch=='.') ans+=se2.size(),se2.clear(); }
}
printf("%d\n",ans);
return ;
}

洛谷 P2264 情书的更多相关文章

  1. 洛谷P2264 情书

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

  2. 题解【洛谷P2264】情书

    题面 看到每一单词在同一句话中出现多次感动值不叠加,一眼想到 \(\text{set}\). 首先将词汇列表中的单词存储起来,我用的是 \(\text{set}\). 对于每一个句子的单词,我们可以先 ...

  3. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  4. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  5. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  6. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  7. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  8. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  9. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

随机推荐

  1. 使用 Git 命令去管理项目的版本控制(二)

    参考 上一篇  完成本篇博客,本篇为作者原创,仅供学习参考. 本篇博文在上一篇的基础上这里记录了我的一个小模拟练习.本篇作为自己的学习笔记,也意在方便其他人的学习使用,达到分享目的.下面主要是操作截图 ...

  2. B. One Bomb (#363 Div.2)

    B. One Bomb time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  3. 【网络爬虫】【python】网络爬虫(一):python爬虫概述

    python爬虫的实现方式: 1.简单点的urllib2 + regex,足够了,可以实现最基本的网页下载功能.实现思路就是前面java版爬虫差不多,把网页拉回来,再正则regex解析信息--总结起来 ...

  4. 【Data Structure & Algorithm】求子数组的最大和

    求子数组的最大和 题目:输入一个整型数组,数组里有正数和负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值,要求时间复杂度为O(n).例如输入数组为1, - ...

  5. Flutter实战视频-移动电商-50.持久化_shared_preferences

    50.持久化_shared_preferences 当app关掉了.再进去的时候 ,购物车的内容还是存在. sqflite提供这个来操作SQLite数据库 flutter提供三种持久化的工具 今天要学 ...

  6. OpenCV第一课

    1.OpenCV下载地址:http://opencv.org/downloads.html 因为本人电脑装的是vs2010,所以下载的是opencv-2.4.11.exe(vc10.vc11.vc12 ...

  7. NITACMOJ144稳定串

    点我>>题目链接 稳定串 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java ...

  8. builtin_shaders-5.3.4f1学习-Sprites-Default

    Shader "Sprites/Default" { Properties { [PerRendererData] _MainTex ("Sprite Texture&q ...

  9. hdu1536(sg函数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1536 题意:首先输入K 表示一个集合的大小  之后输入集合 表示对于这对石子只能去这个集合中的元素的个 ...

  10. CF438E The Child and Binary Tree(生成函数+多项式开根+多项式求逆)

    传送门 可以……这很多项式开根模板……而且也完全不知道大佬们怎么把这题的式子推出来的…… 首先,这题需要多项式开根和多项式求逆.多项式求逆看这里->这里,这里讲一讲多项式开根 多项式开方:已知多 ...