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
  • 相关阅读:
    POJ 3140 Contestants Division (树dp)
    POJ 3107 Godfather (树重心)
    POJ 1655 Balancing Act (树的重心)
    HDU 3534 Tree (经典树形dp)
    HDU 1561 The more, The Better (树形dp)
    HDU 1011 Starship Troopers (树dp)
    Light oj 1085
    Light oj 1013
    Light oj 1134
    FZU 2224 An exciting GCD problem(GCD种类预处理+树状数组维护)同hdu5869
  • 原文地址:https://www.cnblogs.com/phile/p/4473022.html
Copyright © 2011-2022 走看看