描述
現在有乙個字串,請求出這個字串不相同的子串個數。
yxy現在不會做,請你來幫忙……
n<=20w
題解:字尾陣列裸題,其實我在練習模板寫對了沒
**:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #includeview code10 #include11 #include
12#define inf 1000000000
13#define maxn 200000+5
14#define maxm 500+100
15#define eps 1e-10
16#define ll long long
17#define pa pair18
#define for0(i,n) for(int i=0;i<=(n);i++)
19#define for1(i,n) for(int i=1;i<=(n);i++)
20#define for2(i,x,y) for(int i=(x);i<=(y);i++)
21#define for3(i,x,y) for(int i=(x);i>=(y);i--)
22#define mod 1000000007
23using
namespace
std;
24 inline int
read()
2528
while(ch>='
0'&&ch<='9')
29return x*f;30}
31int
n,c[maxn],sa[maxn],rk[maxn],h[maxn],t[maxn],t2[maxn];
32char
s[maxn];
33void build(int
m)3455}
56void
calch()
5762
intmain()
6372 s[n]='';
73 build(128
);74
calch();
75 ll ans=0
;76 for1(i,n)ans+=(ll)(n-sa[i]-h[i]);
77 cout
78return0;
79 }
這次的模板比上次好多了。。。
37 00 vijos p1425 子串清除
p1425子串清除accepted 標籤 顯示標籤 描述 我們定義字串a是字串b的子串當且僅當我們能在b串中找到a串。現在給你乙個字串a,和另外乙個字串b,要你每次從b串中從左至右找第乙個a串,並從b串中刪除它,直到a串不為b串的子串,問你需要進行幾次刪除操作。格式 輸入格式 輸入檔案共2行,第一行...
正式賽1003 子串計數
給出兩個字串 s1 和 s2 在 i 2 時 有 si si 2 si 1 其中 表示將字串首尾相連,求 sn 中有多少個子串是 111 假設 s1 01 s2 1 則 s3 011 s4 1011 s5 0111011 字串 s 的子串定義為 刪去 s 字首與字尾若干字元後得到的新字串。第一行乙個...
計數二進位制子串
題目描述 給定乙個字串s,計算具有相同數量0和1的非空 連續 子字串的數量,並且這些子字串中的所有0和所有1都是組合在一起的。重複出現的子串要計算它們出現的次數。示例 1 輸入 00110011 輸出 6 解釋 有6個子串具有相同數量的連續1和0 0011 01 1100 10 0011 和 01 ...