
SAM
romiqi_new
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[SAM][NOI2015]品酒大会
传送门 先把串倒着插入,这样前缀就变成了后缀 发现串如果是r相似的,那么他们一定是r-1,r-2,…1,0相似的 所以可以用类似于前缀和的方式统计答案,然后就好做了 Code: #include<bits/stdc++.h> #define ll long long #define inf 1000000000000000000ll using namespace std; inlin...原创 2018-12-22 11:26:03 · 300 阅读 · 0 评论 -
[SAM][SDOI2016]生成魔咒
BZOJ4516 SAM模板题,也不知道为什么数组会RE Code: #include<bits/stdc++.h> #define ll long long using 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 · 215 阅读 · 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 · 236 阅读 · 0 评论 -
[BZOJ5417][SAM][线段树合并]NOI2018:你的名字
BZOJ5417 68pts: 我们考虑lim[i]为T中1-i的串的最长的在S中出现过的后缀,特别的,如果不存在这样的后缀,则lim[i]=0 lim[i]可以通过S的后缀自动机求出 具体的,我们在S上匹配T的每一个字符,如果无法匹配就在fail树上跳,直到能够匹配 我们设l[i]为T的后缀自动机中节点i的right集合能表示的最长的串,pos[i]表示该集合的字符串第一次出现的位置,tot为节...原创 2019-07-14 17:18:27 · 186 阅读 · 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 · 464 阅读 · 0 评论 -
190930模拟题解
T1:你在跟朋友玩一个记忆游戏。 朋友首先给你看了n个长度相同的串,然后从中等概率随机选择了一个串。 每一轮你可以询问一个位置上的正确字符,如果能够凭借已有的信息确定出朋友所选的串,那么游戏就结束了,你的成绩就是所用的轮数。 由于你实在太笨,不会任何策略,因此你采用一种方法,每次等概率随机询问一个未询问过的位置的字符。 现在你想知道,在这种情况下,你猜出结果所需的期望次数。 状压DP,预处理一个f...原创 2019-10-02 17:21:21 · 190 阅读 · 0 评论