Description Just like humans, cows often appreciate feeling they are unique in some way. Since Farmer John's cow s all come from the same breed and look quite similar, they want to measure uniqueness in their name s.Each cow's name has some number of…
看了半天题 不知道怎么用SAM维护 于是借(chao)鉴(xi)的一发神犇的 只要判断这个子串之前被标记的记号(也就是他属于第几个串)和这次转移到的是否相同 如果不同就说明该子串属于多个串 直接标记-1 依次转移就好咧 最后统计就是ans[f[i]]+=sam[i].mx−sam[par[i]].mx;f[i]就是他属于那个串 #include<bits/stdc++.h> #define bug(x) cout<<(#x)<<" "<<…
题目链接 \(Description\) 对于每个串,求在\(n\)个串中只在该串中出现过的子串的数量. \(Solution\) 建广义SAM.对每个串插入时新建的np标记其属于哪个串. 然后在parent树上DFS,合并子节点状态就行了. 每个点的贡献就是\(len[i]-len[fa[i]]\). 因为这样的广义SAM不是很正规吧,直接按拓扑序倒序递推是错的.(见评论 https://www.cnblogs.com/cjyyb/p/9100377.html) //26700kb 244ms…
[BZOJ5137]Standing Out from the Herd(后缀自动机) 题面 BZOJ 洛谷 题解 构建广义后缀自动机 然后对于每个节点处理一下它的集合就好了 不知道为什么,我如果按照拓扑序从下往上合并是错的 但是把\(parent\)树建出来再合并就对了.. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath>…
传送门 解题思路 这个似乎和以前做过的一道题很像,只不过这个是求本质不同子串个数.肯定是先把广义\(SAM\)造出来,然后\(dfs\)时把子节点的信息合并到父节点上,看哪个只被一个串覆盖,\(ans+=l_i-l_{fa_i}\).这里我比较懒(sha),合并信息直接暴力扔了个\(set\)启发式合并上去的,似乎分类讨论一下就行了,平添\(log\)正是在下. 代码 #include<iostream> #include<cstdio> #include<cstring&g…
BZOJ5137&&lg4081(广义后缀自动机,set启发式合并) 题面 自己找去 HINT 给定多个文本串,让你查询每个文本串中有多少个本质不同的子串且这个子串只出现在当前这个文本串中. 把题目拆成两个部分,你要先确定这个子串出现在多少个文本串中,这个可以用set启发式合并查询出来,求本质不同的子串的数目也就是\(\sum_{u=1}^{tot}{node[u].len-node[fa].len}\)那么我们也就只要筛选出哪些节点满足条件然后求个和就好了 tips 我自己写了个奇怪做法…
5142: [Usaco2017 Dec]Haybale Feast Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 182  Solved: 131[Submit][Status][Discuss] Description Farmer John is preparing a delicious meal for his cows! In his barn, he has NN haybales (1≤N≤100,0 00). The iith…
题意 定义一个字符串的「独特值」为只属于该字符串的本质不同的非空子串的个数.如 "amy" 与 “tommy” 两个串,只属于 "amy" 的本质不同的子串为 "a" "am" "amy" 共 3 个.只属于 "tommy" 的本质不同的子串为 "t" "to" "tom" "tomm" "tomm…
建出广义SAM,通过parent树对每个节点求出其是否仅被一个子串包含及被哪个包含. 写了无数个sam板子题一点意思都没啊 #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 #define N 200010 char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>…
here:https://oi-wiki.org/string/sam/ 下面转自 KesdiaelKen的雷蒻论坛 来个广义后缀自动机模板题 [USACO17DEC]Standing Out from the Herd #include <bits/stdc++.h> using namespace std; const int MAXN = 100005; int n, l[MAXN], m, s[MAXN]; long long ans[MAXN]; namespace SAM { co…