因為是蒯的題所以沒想好名字,為什麼要用繁體呢?去看《唐詩三百首》吧!
題意很簡單,給你乙個串,求他有多少個不同的子串,滿足字首為a,字尾為b。
需要注意的是,串中所有的字母都是小寫字母。
不同的子串。
一共3行。
第一行母串s;
第二行串a;
第三行串b。
乙個數,即有多少不同的子串。
ababababab
100%:
length(s)<=2000;
length(a)<=2000;
length(b)<=2000;
30%:都少個0。
首先我們可以列舉子串是吧,這樣首先就來了乙個n^2的複雜度,然後我們判斷字首和字尾,這些其實沒什麼太難的部分,我們只要先預處理是否是字首和字尾,就可以很方便的解決了。
然後問題來了,我們怎麼在字串上判重呢?
這裡我們就要引入字串hash了。
我們把s字串從0到i的字串hash止記錄在hash【i】中,然後我們就可以得到字首的字串hash了。
hash[i]=(hash[i-1]*p+s[i]-'a'+1)%t;
那麼其它位怎麼表示呢?
我們可以令字串s【i】~s[j]=(hash[j]-hash[i-1]*p^(j-i+1))%t;(這裡p的次方可以首先求好存好)。
**:
#include#include#include
#include
#include
#define ll long long
#define il inline
#define db double
using
namespace
std;
ll p=31,t=100000007
;ll hash[
2045
];bool vis[100000045
];ll ci[
2045
];il ll find(
int x,int
y)bool qian[2045
];bool hou[2045
];char s[2045
];char a[2045
];char b[2045
];int
len,len1,len2;
intmain()
for(int i=len-1;i>=len2-1;i--)
//for(int i=0;i//
printf("%d %d\n",qian[i],hou[i]);
int ans=0
;
for(int i=0;i)
for(int j=i;j)}}
printf(
"%d\n
",ans);
return0;
}
ORACLE in 字串,字串,字串
因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...
字串物件python int 字串 字串物件
最近研究字串物件,稍微總結一下,以後繼續補充 如果我們須要把python的字串物件轉換為數整物件,我們須要用到int方法。比如 ainfo 222 print int ainfo 輸出的結果是222。然後我們檢視下ainfo在現的型別,通過type方法檢視下,發現是 而如果ainfo fefew22...