题目名称 624. [NOIP 2011]统计单词数
输入输出 stat.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2011-11-26加入
开放分组 全部用户
提交状态
分类标签
NOIP/CSP 字符串
分享题解
通过:298, 提交:967, 通过率:30.82%
Gravatar城南花已开 100 0.003 s 0.66 MiB C++
GravatarHyoi_0Koto 100 0.006 s 0.38 MiB C++
Gravatar龙征天 100 0.018 s 0.38 MiB C++
GravatarTabing010102 100 0.019 s 1.25 MiB C++
Gravatarabc 100 0.020 s 1.27 MiB C++
Gravatarwol 100 0.021 s 2.22 MiB C++
Gravatarzjh001 100 0.022 s 0.29 MiB C
Gravatarjinqiu 100 0.022 s 1.27 MiB C++
Gravatar404 100 0.023 s 5.09 MiB C++
Gravatarwo shi 38 100 0.024 s 1.27 MiB C++
本题关联比赛
20131028(普及)
防止颓废的小练习v0.15
关于 统计单词数 的近10条评论(全部评论)
被字符串狠狠地制裁了
Gravatar城南花已开
2023-11-22 15:40 26楼
不会
Gravatar发光二向箔
2019-10-27 18:07 25楼
Gravatardateri
2018-10-21 16:28 24楼
向字符串低头
Gravatar521
2018-10-21 16:16 23楼
之前忘了makenext(),竟然还能得80分……为什么这么玄学
GravatarShirry
2017-09-07 11:10 22楼
改天补一波kmp
GravatarShirry
2017-09-06 17:40 21楼
裸的kmp
GravatarHeHe
2017-07-12 23:05 20楼
为什么我只有50分

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char wrd[15000];
char actiw[15];
int cou=0,f=0,p=-1,rp=0,isf=1;
void turnlow(char wd[])
{
int i=0;
while(wd[i]!='\0')
{
wd[i]=tolower(wd[i]);
i++;
}
}
int main()
{
int pp=0,poi=0;
cin>>wrd;
turnlow(wrd);
char ch=getchar();
while(ch=getchar())
{
ch=tolower(ch);
p++;
if(ch=='\n'||ch==EOF)
break;
if(ch==' ')
{
if(f==0)
continue;
pp=0;
f=0;
if(isf==1)
{
cou++;
if(cou==1)
{
rp=poi;
}
}
isf=1;
}
else
{
if(f==0)
{
poi=p;
}
f=1;
if(wrd[pp++]!=ch)
{
isf=0;
}
}
}
if(cou==0)
cout<<-1<<endl;
else
cout<<cou<<' '<<rp<<endl;
return 0;
}
Gravatar+1s
2017-07-08 13:05 19楼
ac
Gravatar爆零自动机
2016-10-18 08:14 18楼
我在干啥………………
GravatarRapiz
2016-10-17 20:51 17楼

624. [NOIP 2011]统计单词数

★☆   输入文件:stat.in   输出文件:stat.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【输入样例】

输入共2 行。

第1 行为一个字符串,其中只含字母,表示给定单词;

第2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

【输出样例】

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。

【输入样例1】

To
to be or not to be is a question

【输出样例1】

2 0

【输入输出样例1说明】

输出结果表示给定的单词To在文章中出现两次,第一次出现的位置为0。

【输入样例2】

to
Did the Ottoman Empire lose its power at that time

【输出样例2】

-1

【输入输出样例2说明】

表示给定的单词to在文章中没有出现,输出整数-1。

【数据范围】

1 ≤ 单词长度≤ 10。

1 ≤ 文章长度≤ 1,000,000。