摘要: 原本觉得搞OI的时候组合计数还不算太弱,但现在已经完全不会了,,稍微补救一下 卡特兰数 组合意义 n个节点二叉树的形态个数(还有很多其他的形式) (今天数据结构课上老师问了这个问题,然后我解了个生成函数发现不会化开根号,也忘记这是卡特兰数了) 计算 通过递推式可以列出生成函数,然后解一个二次方程,用 阅读全文
posted @ 2022-12-01 17:31 sz[sz] 阅读(56) 评论(0) 推荐(0)
摘要: 题目链接 设f[i]表示还有i个数不在集合内的期望步数,尝试列一下转移式,会发现式子由转移到下一轮的期望步数和之后的DP值组成,考虑DP的转移过程,就会发现答案为转移到下一轮的期望步数$\times $期望的轮数(即把前者设为1之后的DP值)。 前者是易求的,考虑后者,如果直接考虑一轮第一次遇到0时 阅读全文
posted @ 2022-12-01 15:17 sz[sz] 阅读(38) 评论(1) 推荐(0)
摘要: B C D 根据题意状压DP就好了。我这里的实现应该是比较简洁的,先按照输入的格式,再把下半部分往右移,这样每个点相邻点都可以用同样的方向数组计算。 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=20,M=(1<<20 阅读全文
posted @ 2022-11-07 20:11 sz[sz] 阅读(184) 评论(0) 推荐(0)
摘要: 题目链接 随机大法妙啊! 原本想考虑每种数的贡献,在不合法的区间做标记;但这不仅麻烦,而且要以k为循环节考虑,不可做。 而对于每次询问,又不能每个数都检验一遍;同时考虑如果只检验区间长度(即所有数出现次数之和)是可能把no判断为yes的。 但发现答案为yes要求每种数都合法,只要有任何一个数(或一个 阅读全文
posted @ 2022-10-18 15:07 sz[sz] 阅读(81) 评论(1) 推荐(0)
摘要: 收集一些数据结构相关的模板/板题 ST表 用pw数组存2的次幂,避免位运算优先级问题。 点击查看代码 int a[N],mx[N][M],pw[M],lg[N]; int cnt(int l,int r){ int p=lg[r-l+1]; return max(mx[l][p],mx[r-pw[p 阅读全文
posted @ 2022-08-28 18:42 sz[sz] 阅读(36) 评论(0) 推荐(0)
摘要: 数论 5-02 PN筛 题目链接 7-09 min-25 插值 多项式 7-10 EGF 题目链接 EGF讲解 对于有标号的计数问题,考虑EGF,且有已知结论:设无向图的EGF为G,无向连通图的EGF为F,有G=exp(F)。 考虑边出现的概率如何处理:即要满足两个无向连通图在合并的时候,它们之间的 阅读全文
posted @ 2022-08-22 16:11 sz[sz] 阅读(34) 评论(0) 推荐(0)
摘要: 线性逆元 inv[1]=1; for(int i=2;i<=n;++i){ inv[i]=prd((P-P/i),inv[P%i]); } 线性筛 点击查看代码 void A(int& x,int y){ x+=y; if(x>=P) x-=P; } int u[N],s[N],pri[N]; bo 阅读全文
posted @ 2022-08-08 10:59 sz[sz] 阅读(29) 评论(0) 推荐(0)
摘要: AC自动机 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=1e6+2,M=26; int n,m,k,t[N][M],d[N],s[N],f[N],c[152]; char a[152][72],b[N]; void 阅读全文
posted @ 2022-08-08 10:05 sz[sz] 阅读(42) 评论(0) 推荐(0)
摘要: oi-wiki的讲解 1D1D 转移代价函数满足交叉优于包含,即可推出具有决策单调性。 然后比较一般的做法是,根据每个点能够作为被决策点的是一段区间,且区间随着点连续右移,可以用单调队列维护决策点,每次加入时弹出队尾所有能够完全覆盖的,然后到第一个不完全覆盖的,二分找出区间左端点。 对于被决策点不会 阅读全文
posted @ 2022-07-31 16:11 sz[sz] 阅读(106) 评论(0) 推荐(0)
摘要: oi-wiki endpos(t):t在s中的所有结束位置构成的集合 等价类:endpos相同的非空子串 SAM的每个节点(状态)<==>一组等价类 阅读全文
posted @ 2022-07-29 16:46 sz[sz] 阅读(50) 评论(0) 推荐(0)