zoukankan      html  css  js  c++  java
  • bzoj1819

    水题,上trie,然后穷举每一位的时候判定一下三种编辑

     1 var son:array[0..10010*20,1..26] of longint;
     2     v:array[0..10010*20] of longint;
     3     d:array[0..10010] of boolean;
     4     s:string;
     5     t,i,l,n,m:longint;
     6 
     7 procedure add(w:longint);
     8   var p,i,y:longint;
     9   begin
    10     p:=1;
    11     for i:=1 to length(s) do
    12     begin
    13       y:=ord(s[i])-96;
    14       if son[p,y]=0 then
    15       begin
    16         inc(t);
    17         son[p,y]:=t;
    18       end;
    19       p:=son[p,y];
    20     end;
    21     v[p]:=w;
    22   end;
    23 
    24 function find(p,x:longint):longint;
    25   var i,y:longint;
    26   begin
    27     if p=0 then exit(0);
    28     for i:=x to l do
    29     begin
    30       y:=ord(s[i])-96;
    31       if son[p,y]=0 then exit(0)
    32       else p:=son[p,y];
    33     end;
    34     if (v[p]>0) and not d[v[p]] then
    35     begin
    36       d[v[p]]:=true;
    37       exit(1)
    38     end
    39     else exit(0);
    40   end;
    41 
    42 function ask:longint;
    43   var p,i,y,j:longint;
    44   begin
    45     p:=1;
    46     ask:=0;
    47     for i:=1 to l do
    48     begin
    49       for j:=1 to 26 do
    50         ask:=ask+find(son[p,j],i)+find(p,i+1)+find(son[p,j],i+1);
    51                 // 在i前一位插入      删除      修改
    52       y:=ord(s[i])-96;
    53       p:=son[p,y];
    54       if p=0 then exit;
    55     end;
    56     for i:=1 to 26 do
    57       ask:=ask+find(son[p,i],l+1); //在最后一位插入
    58   end;
    59 
    60 begin
    61   readln(n,m);
    62   t:=1;
    63   for i:=1 to n do
    64   begin
    65     readln(s);
    66     add(i);
    67   end;
    68   for i:=1 to m do
    69   begin
    70     fillchar(d,sizeof(d),false);
    71     readln(s);
    72     l:=length(s);
    73     if find(1,1)>0 then writeln(-1)
    74     else writeln(ask);
    75   end;
    76 end.
    View Code
  • 相关阅读:
    引用赋值的问题
    mysql的笔记
    输入法失败
    eclipse的快捷键
    c++/c在两个文件公用一个变量
    用c++ sttring检测名字是否有空格
    QLineEdit的信号函数
    c++博客转载
    qt-博客
    QT聊天室--重大bug
  • 原文地址:https://www.cnblogs.com/phile/p/4473022.html
Copyright © 2011-2022 走看看