問題描述:
蚊子最近經常做噩夢,然後就會被嚇醒。這可不好。。瘋子一直在發愁,然後突然有一天, 他發現蚊子其實就是害怕某些事。如果那些事出現在她的夢裡,就會害怕。我們可以假定那 個害怕的事其實是乙個字串。而她做的夢其實也是乙個字串。
她可以乙個晚上一直做夢,所以夢這個字串會很長,如果其中包含了她所害怕的事情,那 麼她這天晚上就會害怕。當然乙個害怕的事也可能在這天晚上被她夢到很多遍,當然每個晚 上也可能有很多種害怕的事都被夢到。
每個害怕的事都有一定的權值。而這天晚上如果夢到了某件事,那麼這件事所產生的黑暗效 果等於這件事的權值乘以這個害怕的事在夢字串裡的開始位置。如果同樣的事夢到了很多 遍,那麼就重複上面的操作很多遍。當天晚上的黑暗效果總和等於當天所有害怕的事產生的 黑暗效果累加到一起。現在瘋子想知道蚊子這些天來噩夢的黑暗效果總和是多少。
資料輸入:
第1行兩個整數n,m代表一共有n天夢和m個害怕的事。
第2行到第m+1行。每行乙個字串ti,代表第i個害怕的事
第m+2行到第2m+2行。每行乙個整數ai.代表第i個害怕的事權值
第2m+3行到第n+2m+3行。每行乙個字串si,代表第i天的夢。
結果輸出:
sum
sum=n天裡黑暗效果的總和。
我們保證每天的黑暗效果都小於maxlongint;
樣例:2 2
abcdef12
abcdef
defabc
核心思想:
模擬一秒的話能拿70,可以用kmp的,正好練練手
var
a,s:array[0..210]of string;
p,d:array[0..256]of longint;
i,j,sum,n,m:longint;
procedure kmp(l,x:longint);
var i,j,k:longint;
begin
fillchar(p,sizeof(p),0);
j:=0;
fori:=2 to l do
begin
while (j>0)and(a[x][j+1]<>a[x][i]) do j:=p[j];
ifa[x][j+1]=a[x][i] then inc(j);
p[i]:=j;
end;
fork:=1 to n do
begin
j:=0;
for i:=1 to length(s[k]) do
begin
while (j>0)and(a[x][j+1]<>s[k][i]) do j:=p[j];
if a[x][j+1]=s[k][i] then inc(j);
if j=l then
begin
sum:=sum+(i-l+1)*d[x];
j:=p[j];
end;
end;
end;
end;
begin
assign(input,'p1252.in');reset(input);
assign(output,'p1252.out');rewrite(output);
readln(n,m);
sum:=0;
fori:=1 to m do readln(a[i]);
fori:=1 to m do readln(d[i]);
fori:=1 to n do readln(s[i]);
fori:=1 to m do
kmp(length(a[i]),i);
writeln(sum);
close(input);close(output);
end.
NDK開發指南 NDK安裝
android ndk 安裝 安裝 1 安裝需要 android ndk目前可以在linux os x 或者 windows作業系統上使用 windows使用者需要安裝cygwin1.7或以後的版本,注意,現在msys和cygwin1.5現在已經不支援了 你必須搭建了android sdk環境才可以...
NDK學習二 NDK目錄結構
ndk目錄結構 目錄名描述 build 其中makefile檔案都存放在build core目錄 docs 幫助文件 platforms 存放不同android版本,不同平台架構的標頭檔案和庫檔案 prebuilt 存放和編譯相關工具比如make.exe samples ndk 例子,用根目錄下的n...
NDK引用NDK生成的so
1 編譯so庫 假如我們的 需要加密而不被別人知道,這裡可以通過ndk編譯生成so 準備好加密 檔案 encrypt.h encrypt.c 放進jni目錄 編寫mk檔案,放進jni目錄 local path call my dir include clear vars local module e...