您的位置:首页 > 其它

jzoj 1389. 【2012.02.25普及组】单词 结题报告

2016-07-13 19:31 537 查看

1389. 【2012.02.25普及组】单词 (Standard IO)

时间限制: 1000 ms  空间限制: 131072 KB  

题目描述

  FJ想计算他的N(1<=N<=1000)只奶牛的名字的好听度,每个名字是一个长度不超过1000的英文字母组成。

他创建了一个好名字的集合,数量为M(1<=M<=100),每个好名字的长度不超过30,奶牛的名字中每包含一个好名字(“包含”不一定要求连续),那么它的好听度就加1.

所有的名字都不区分大小写,如名字“Bessie”包含“Be”、“sI”、“EE”、“Es”,但是不包含“eB”。

现在请你帮FJ计算每个奶牛名字的好听度。

输入

第1行: 2个用空格隔开的整数:N 和 M;

第2..N+1行: 第i+1为第i个奶牛的名字;

第N+2..N+M+1行:第N+i+1行为第i个好名字。

输出

第1..N行:第i个数为第i头奶牛名字的好听度。

样例输入

5 3
Bessie
Jonathan
Montgomery
Alicia
Angola
se
nGo
Ont


样例输出

1
1
2
0
1


代码如下:

直接枚举即可 这道题其实超级水!!!不要被那个极限的(1000*1000*30*100)的循环吓到了,事实上这个4重循环是可以卡过的(jzoj上是AC哒)

var
n,m,i,j,k,l,d:longint;   s:boolean;
a:array[0..300]of ansistring;
b:array[0..10000]of ansistring;
c:array[-1..10000]of longint;

procedure init;
var i:longint;
begin
readln(n,m);
for i:=1 to n do
begin
readln(b[i]);
b[i]:=upcase(b[i]);
end;
for i:=1 to m do
begin
readln(a[i]);
a[i]:=upcase(a[i]);
end;
end;

begin
init;
for i:=1 to n do
begin
for j:=1 to m do
begin
d:=0;
for l:=1 to length(a[j]) do
begin
s:=false;
for k:=d+1 to length(b[i]) do
if a[j][l]=b[i][k] then begin d:=k; s:=true; break; end;
if not s then break;
end;
if s then inc(c[i]);
end;
end;
for i:=1 to n do
writeln(c[i]);
end.



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jzoj 1389