![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SAM
romiqi_new
这个作者很懒,什么都没留下…
展开
-
[SAM][NOI2015]品酒大会
传送门先把串倒着插入,这样前缀就变成了后缀发现串如果是r相似的,那么他们一定是r-1,r-2,…1,0相似的所以可以用类似于前缀和的方式统计答案,然后就好做了Code:#include<bits/stdc++.h>#define ll long long#define inf 1000000000000000000llusing namespace std;inlin...原创 2018-12-22 11:26:03 · 264 阅读 · 0 评论 -
[SAM][SDOI2016]生成魔咒
BZOJ4516SAM模板题,也不知道为什么数组会RECode:#include<bits/stdc++.h>#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;c...原创 2018-12-15 15:12:54 · 190 阅读 · 0 评论 -
SAM总结(持续更新到放假)(好吧我已经放假了)
一.LCS(1e6)最基础的SAM题,建第一个串的SAM,然后把第二个串放在上面跑的时候如果跑不动就回到root,不然就走下去。Code:#include&lt;bits/stdc++.h&gt;const int N=2000005;typedef long long ll;using namespace std;char s[N],t[N];int n,len=0,ans=0;...原创 2018-12-22 16:17:50 · 195 阅读 · 0 评论 -
[BZOJ5417][SAM][线段树合并]NOI2018:你的名字
BZOJ541768pts:我们考虑lim[i]为T中1-i的串的最长的在S中出现过的后缀,特别的,如果不存在这样的后缀,则lim[i]=0lim[i]可以通过S的后缀自动机求出具体的,我们在S上匹配T的每一个字符,如果无法匹配就在fail树上跳,直到能够匹配我们设l[i]为T的后缀自动机中节点i的right集合能表示的最长的串,pos[i]表示该集合的字符串第一次出现的位置,tot为节...原创 2019-07-14 17:18:27 · 147 阅读 · 0 评论 -
[BZOJ5512][SAM]TJOI2019:甲苯先生和大中锋的字符串
BZOJ5512放到SAM上统计right集合大小然后就完了Code:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=getchar();} whi...原创 2019-09-02 21:56:22 · 428 阅读 · 0 评论 -
190930模拟题解
T1:你在跟朋友玩一个记忆游戏。朋友首先给你看了n个长度相同的串,然后从中等概率随机选择了一个串。每一轮你可以询问一个位置上的正确字符,如果能够凭借已有的信息确定出朋友所选的串,那么游戏就结束了,你的成绩就是所用的轮数。由于你实在太笨,不会任何策略,因此你采用一种方法,每次等概率随机询问一个未询问过的位置的字符。现在你想知道,在这种情况下,你猜出结果所需的期望次数。状压DP,预处理一个f...原创 2019-10-02 17:21:21 · 162 阅读 · 0 评论