NDK 1252 不怕噩夢

2021-05-28 00:57:51 字數 1864 閱讀 8222

問題描述:

蚊子最近經常做噩夢,然後就會被嚇醒。這可不好。。瘋子一直在發愁,然後突然有一天,  他發現蚊子其實就是害怕某些事。如果那些事出現在她的夢裡,就會害怕。我們可以假定那  個害怕的事其實是乙個字串。而她做的夢其實也是乙個字串。 

她可以乙個晚上一直做夢,所以夢這個字串會很長,如果其中包含了她所害怕的事情,那  麼她這天晚上就會害怕。當然乙個害怕的事也可能在這天晚上被她夢到很多遍,當然每個晚  上也可能有很多種害怕的事都被夢到。 

每個害怕的事都有一定的權值。而這天晚上如果夢到了某件事,那麼這件事所產生的黑暗效  果等於這件事的權值乘以這個害怕的事在夢字串裡的開始位置。如果同樣的事夢到了很多  遍,那麼就重複上面的操作很多遍。當天晚上的黑暗效果總和等於當天所有害怕的事產生的  黑暗效果累加到一起。現在瘋子想知道蚊子這些天來噩夢的黑暗效果總和是多少。 

資料輸入:

第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...