1622: [Usaco2008 Open]Word Power 名字的能量

來源:互聯網
上載者:User

標籤:

1622: [Usaco2008 Open]Word Power 名字的能量Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 370  Solved: 184
[Submit][Status][Discuss]Description    約翰想要計算他那N(1≤N≤1000)只奶牛的名字的能量.每隻奶牛的名字由不超過1000個字待構成,沒有一個名字是空字型串,  約翰有一張“能量字串表”,上面有M(1≤M≤100)個代表能量的字串.每個字串由不超過30個字型構成,同樣不存在Null 字元串.一個奶牛的名字蘊含多少個能量字串,這個名字就有多少能量.所謂“蘊含”,是指某個能量字串的所有字元都在名字串中按順序出現(不一定一個緊接著一個).    所有的大寫字母和小寫字母都是等價的.比如,在貝茜的名字“Bessie”裡,蘊含有“Be”“sI”“EE”以及“Es”等等字串,但不蘊含“lS”或“eB”.請幫約翰計算他的奶牛的名字的能量.Input    第1行輸入兩個整數N和M,之後N行每行輸入一個奶牛的名字,之後M行每行輸入一個能量字串.Output     一共N行,每行一個整數,依次表示一個名字的能量.Sample Input5 3
Bessie
Jonathan
Montgomery
Alicia
Angola
se
nGo
Ont

INPUT DETAILS:

There are 5 cows, and their names are "Bessie", "Jonathan",
"Montgomery", "Alicia", and "Angola". The 3 good strings are "se",
"nGo", and "Ont".



Sample Output1
1
2
0
1

OUTPUT DETAILS:

"Bessie" contains "se", "Jonathan" contains "Ont", "Montgomery" contains
both "nGo" and "Ont", Alicia contains none of the good strings, and
"Angola" contains "nGo".

HINT Source

Silver

 

題解:這道題顯然可以暴力隨便謝謝水過,但要是這樣子的話就遠遠沒有辣麼好玩了,於是我再一次請出了萌萌噠線段樹——

線段樹儲存每一個名字,然後連維護都不需要,直接實現尋找在某某區間範圍內最靠左的某個指定字母的位置,然後有了這個,就可以直接用後面的子串對前面的名字進行匹配即可,複雜度O(NMLlogM)(居然還是2988 ms水過去了,好開心)

 1 /************************************************************** 2     Problem: 1622 3     User: HansBug 4     Language: Pascal 5     Result: Accepted 6     Time:2988 ms 7     Memory:2448 kb 8 ****************************************************************/ 9  10 var11    i,j,k,l,m,n,ans:longint;12    ss:ansistring;13    b,c:array[0..10000] of ansistring;14    a:array[0..10000,0..26] of longint;15 function min(x,y:longint):longint;inline;16          begin17               if x<y then min:=x else min:=y;18          end;19 function max(x,y:longint):longint;inline;20          begin21               if x>y then max:=x else max:=y;22          end;23 procedure built(z,x,y:longint);24           var i:longint;25           begin26                if (x=y) then27                   a[z,ord(ss[x])-64]:=128                else29                    begin30                         built(z*2,x,(x+y) div 2);31                         built(z*2+1,(x+y) div 2+1,y);32                         for i:=1 to 26 do a[z,i]:=a[z*2,i]+a[z*2+1,i]33                    end;34           end;35 function approach(z,x,y,l,r,t:longint):longint;36          var a1:longint;37          begin38               if l>r then exit(0);39               if a[z,t]=0 then exit(0);40               if x=y then exit(x);41               a1:=approach(z*2,x,(x+y) div 2,l,min(r,(x+y) div 2),t);42               if a1<>0 then exit(a1);43               exit(approach(z*2+1,(x+y) div 2+1,y,max(l,(x+y) div 2+1),r,t));44          end;45  46  47 begin48      readln(n,m);49      for i:=1 to n do50          begin51               readln(b[i]);52               b[i]:=upcase(b[i]);53          end;54      for i:=1 to m do55          begin56               readln(c[I]);57               c[i]:=upcase(c[i]);58          end;59      for i:=1 to n do60          begin61               ss:=b[i];62               fillchar(a,sizeof(a),0);63               built(1,1,length(ss));64               ans:=0;65               for j:=1 to m do66                   begin67                        l:=0;68                        for k:=1 to length(c[j]) do69                            begin70                                 l:=approach(1,1,length(ss),l+1,length(ss),ord(c[j][k])-64);71                                 if l=0 then break;72                            end;73                        if l<>0 then inc(ans);74                   end;75               writeln(ans);76          end;77 end.

1622: [Usaco2008 Open]Word Power 名字的能量

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.