洛谷 P2264 情书
题目背景
一封好的情书需要撰写人全身心的投入。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字符。
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 情书的更多相关文章
- 洛谷P2264 情书
P2264 情书 88通过 971提交 题目提供者lin_toto 标签字符串 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 yyy快把题目改回来 噫 这题的题目好逗啊... 情书std ...
- 题解【洛谷P2264】情书
题面 看到每一单词在同一句话中出现多次感动值不叠加,一眼想到 \(\text{set}\). 首先将词汇列表中的单词存储起来,我用的是 \(\text{set}\). 对于每一个句子的单词,我们可以先 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
随机推荐
- 如何在.net项目中使用全局程序集GAC
在解决已有.net网站问题过程中(之前的同事写的),发现出现dll不存在的情况,build报错 在bin目录下找不到该dll,后来发现是全局程序集,存储在C:\Windows\assembly目录下 ...
- win7 win8 快捷键直接调出任务管理器
问:windos7如何设置按ctrl+alt +delete三个键就直接出现任务管理器. 答:你应该这样按Ctrl+shift+esc,这样就可以直接调出任务管理器,而且一只手就可以完成,大拇指按Ct ...
- SmartSql使用教程(3)——SmartSql中的事务,及AOP的使用
一.引言 经过两章的铺垫,我们现在对SmartSql已经有了一定的了解,那么今天我们的主题是事务处理.事务处理是常用的一种特性,而SmartSql至少提供了两种使用事务的方法.一种是通过Reposit ...
- 【WIP_S9】图论算法
创建: 2018/06/01 图的概念 有向边 有向图 无向边 无向图 点的次数: 点连接的边的数量 闭路: 起点和重点一样 连接图: 任意两点之间都可到达 无闭路有向图: 没有闭路的有向图 森林: ...
- E20180518-hm
priority n. 优先,优先权; (时间,序上的) 先,前; 优先考虑的事; [数] 优先次序;
- 138. Copy List with Random Pointer (not do it by myself)
A linked list is given such that each node contains an additional random pointer which could point t ...
- 658. Find K Closest Elements
Given a sorted array, two integers k and x, find the k closest elements to x in the array. The resul ...
- 洛谷P4301 [CQOI2013]新Nim游戏(线性基)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 后手在什么时候能够获胜呢?只有在他能构造出一个子集的异或和为0时(这个应该是nim博弈的结论了吧) 那么为了必胜,我们就要取到没有子集异或和为0为止 ...
- IT兄弟连 JavaWeb教程 JSP动作指令
JSP动作指令语法 JSP动作指令语法格式如下: <jsp:动作名 属性名1="属性值1" 属性名2="属性值2" ... %> JSP具体动作指令 ...
- Mybatis源码解析(二)
根据上篇的代码跟踪mybatis已经ready好 SqlSessionFactory了,下面就是我们怎么去通过这个factory去获取sqlSession会话了,继续扒源码: mybatis-spri ...