不怕噩梦(NDK1252)

算法:字符串处理

分析:裸的模拟题,我们可以先判断原字串与对应字串的长度,如果长度不同直接break。可以减少约2s的时间。


program NDK1252;



const

 maxn=200;



var

 n,m,ans:longint;

 final,s:array [0..maxn] of string;

 a:array [0..maxn] of longint;

 

procedure init;

var

 i:longint;

begin

 ans:=0;

 readln(n,m);

 for i:=1 to m do readln(s[i]);

 for i:=1 to m do readln(a[i]);

 for i:=1 to n do readln(final[i]);

end;



procedure main;

var

 i,j,k:longint;

 temp:string;

begin

 for i:=1 to m do

  begin

   for j:=1 to n do 

    begin

     for k:=1 to length(final[j]) do

      begin       

       if k+length(s[i])-1>length(final[j]) then break;

       temp:=copy(final[j],k,length(s[i]));

       if s[i]=temp then inc(ans,k*a[i]);

      end;

    end;

  end;

 writeln(ans);

end;



begin

 assign(input,'NDK1252.in'); reset(input);

 assign(output,'NDK1252.out'); rewrite(output); 

 

 init;

 main;

 

 close(input); close(output);

end.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值