看一眼題。本質不同的字串數。
嘴角微微上揚。
每一次加乙個數輸出乙個答案。
笑容漸漸消失。
等等,\(sam\)好像也可以求本質不同的字串。
設當前字串用\(x\)表示,每次插入完成後\(ans\)加上\(len[x]-len[fa]\)就行了。
嘴角微微上揚。
等等,炸空間了。
笑容漸漸消失。
用\(map\)不就得了。
嘴角再次上揚。
寫完過了。
笑出了聲。
翻題解,時看到了\(sa\)。
笑容漸漸僵硬。
#include#include#include#include#include#includeusing namespace std;
#define int long long
const int n=101000;
int n,ans;
struct sam
void ins(int c)
} u=x;
}}sam;
int read()
while(ch>='0'&&ch<='9')
return sum*f;
}signed main()
return 0;
}
SDOI2016 生成魔咒
這是一道 sa 的練手好題 建議做之前先去做一下2408 之後你就肯定會做這道題了 首先上面那道題的答案就是 sum nn 1 sa i het i 就是對於每乙個字尾求出其能產生的子串,之後減掉和之前本質相同的子串 對於這個題,我們需要求出所有字首的本質不同的子串個數 先無腦敲上 sa 和 het...
SDOI2016 生成魔咒
魔咒串由許多魔咒字元組成,魔咒字元可以用數字表示。例如可以將魔咒字元 1 2 拼湊起來形成乙個魔咒串 1,2 乙個魔咒串 s 的非空字串被稱為魔咒串 s 的生成魔咒。例如 s 1,2,1 時,它的生成魔咒有 1 2 1,2 2,1 1,2,1 五種。s 1,1,1 時,它的生成魔咒有 1 1,1 1...
SDOI2016 生成魔咒
魔咒串由許多魔咒字元組成,魔咒字元可以用數字表示。例如可以將魔咒字元 1 2 拼湊起來形成乙個魔咒串 1,2 乙個魔咒串 s 的非空字串被稱為魔咒串 s 的生成魔咒。例如 s 1,2,1 時,它的生成魔咒有 1 2 1,2 2,1 1,2,1 五種。s 1,1,1 時,它的生成魔咒有 1 1,1 1...