Loading

小结论与某些入门板子整合

主定理

\[T(n)=aT\left(\frac{n}{b}\right)+f(n) \]

\[let\quad N=n^{\log_b a} \]


\[f(n)=o(N) \quad \text{then}\quad T(n)=\Theta(N) \]

\[f(n)=\Theta(N\log^k n)\quad \text{then}\quad T(n)=\Theta(N\log^{k+1}n) \]

\[f(n)=\omega(N)\quad \text{then}\quad T(n)=\Theta(f(n)) \]

弱智吧合集

\[f(u)=\sum_{(u,v)\in E}[\operatorname{deg}_v>\operatorname{deg}_u]=\mathcal O(\sqrt m) \]

在一个 \(n,m\) 同阶的图上,

\[\sum_{d\in[0,n]\cap \Z}\sum_u[\operatorname{deg}_u\ge d]=\mathcal O(n) \]


本质不同子序列:

\(f_i:\)\(a_i\) 结尾且是第一次出现,\(f_i=\sum_{j=\operatorname{lst}_i}^{i-1} f_j\)

\(f_i:\)\(i\) 个数组成,\(f_i=2f_{i-1}-f_{\operatorname{lst}_i-1}(f_0=-1)\)


\[\varphi(n)=\Omega\left(\frac n4\right) \]


线性基大小 \(k\),从 \(n\) 个数中选取子集使异或和为 \(x\) 的方案数为 \(2^{n-k}\)。非线性基元素任选,然后从线性基里选的方案唯一。


拿横纵坐标 \(\in[0,n]\) 的整点构造 \(\frac 14\) 凸包,其点数 \(=\mathcal O(n^{\frac 23})\)


二分图最大匹配 \(n-\max_{S\subseteq L}\{|S|-|N(S)|\}\)\(m-\max_{S\subseteq R}\) 同,证明思路类Hall


\(0/1\) 最大流必需边:满流、残量网络双点非强连通【新型城市化】;最小割可行边:同;最小割必需边:满流、\(u\)\(S\) 以及 \(v\)\(T\) 分别共属一个 SCC。


字符串 \(A,B\)

\[A<B^{\infty}\Longleftrightarrow A<AB\\ A^{\infty}<B^{\infty}\Longleftrightarrow AB<BA\\ \operatorname{lcp}(A^{\infty},B^{\infty})=\operatorname{lcp}(AB,BA)\quad (A^{\infty}\ne B^{\infty}) \]


\(1\sim n\) 中选出 \(k\) 个位置要求两两不相邻(相邻两者必有至少一个被选中同理)方案数:

\[\binom {n-k+1}k \]

选出第 \(i\) 个位置 \(p_i\),仅需确认 \(\{p_i-i\}\) 构成集合,要求不可重,值域 \([0,n-k]\)


一个点双中存在奇环 \(\Longleftrightarrow\) 该点双中任意边都至少在一个奇环之中


K-Nim


SAT

SAM

https://www.luogu.com.cn/blog/wangrx/sam-guang-yi-sam-yu-ac-zi-dong-ji-zhi-jian-di-guan-ji

https://www.luogu.com.cn/blog/zyz-2008dph/solution-p3804

一前一后,配合食用

SOSb/p

高维 \(前/后缀(x=0/1) 和/差分(y=0/1)\):令 \(z=x\oplus y\)

for(int i=0;i<n;++i) for(int s=0;s<1<<n;++s)/*z=1则倒序枚举*/ if(/*x=1则判不包含,!*/s&(1<<i)) f[s]+=/*y=1则-=*/f[s^(1<<i)];

玩具装箱

\[s_i\gets s_i+i\quad L\gets L+1 \]

\[f_i=\min\{f_j+\left(s_i-s_j-L\right)^2\} \]

\[f_j+s_i^2+(s_j+L)^2-2s_i(s_j+L) \]

\[f_i=a_ib_j+c_i+d_j \]

\[lt\quad a_i=-2s_i,b_j=s_j+L,c_i=s_i^2,d_j=f_j+(s_j+L)^2 \]

形如 \(f_i=\operatorname{min-max}\{a_ib_j+c_i+d_j\}\)

点集中取 \(kx+y\)\(\operatorname{min-max}\),拿斜率 \(-k\) 切之

\[(b_j,d_j),k=-a_i \]

玩具装箱单调队列模型需满足 \(a\)\(b\) 均单调。

0/1分数规划

LOJ149

\[\frac{suma}{sumb}>ans \]

\[suma>sumb\times ans \]

\[suma-sumb\times ans>0 \]

\[\left(\sum a-b\times ans\right)>0 \]

二分 \(ans\),对所有人的 \(a-b\times ans\) 排序后贪心选取最大的 \(k\) 个,如果它们的和 \(>0\) 那么存在比当前 \(ans\) 更大的解,反之亦然。

KTT

https://www.luogu.com.cn/problem/solution/CF436F

https://www.cnblogs.com/joke3579/p/paperessay221202.html#31-

生成函数记忆点

典中典:

\[F(x)=\operatorname{gen}(f)(x)=\frac k{1-p(x)}\Rightarrow f(x)=\sum k\times p^n(x) \]

付公主的背包:

\[\ln \frac 1{1-x^k}=\sum \frac 1n x^{nk} \]

广义二项式定理:

\[(a+b)^{-n}=\sum_{k=0}^\infty a^kb^{-n-k}\binom {-n}k=\sum_{k=0}^\infty \frac{a^k}{b^{n+k}}(-1)^k\binom{n+k-1}k \]

\[\frac 1{(1-x)^n}=\sum_{i=0}^\infty \binom{n+i-1}i x^i \]

  • EGF可以将组合数消去。

波特·彼阳

边双

没有桥的极大连通子图(\(u\)\(v\) 总有两条路径满足无边交),额外处理孤点

void tar(int now,int lst){
	dfn[now]=low[now]=++dfscnt;
	stk[++tp]=now;for(int v:vc[now]) if(v!=lst){
		if(!dfn[v]){
			tar(v,u);low[now]=min(low[now],low[v]);
			if(low[v]>dfn[now]){
                //(now,v)是桥
				++kcnt;do bel[stk[tp]]=kcnt;while(stk[tp--]!=v);
			}
		}
		else low[now]=min(low[now],dfn[v]);
	}
}
void tar(int u){//根所在边双特殊处理
	tar(u,0);++kcnt;while(tp) bel[stk[tp--]]=kcnt;
}

点双

没有割点的极大连通子图(\(u\)\(v\) 总有两条路径满足除 \(u,v\) 两点外无点交),两点一边算作点双,仅割点属于多个,圆方树圆方相间额外处理孤点

void tar(int now){
	dfn[now]=low[now]=++dfscnt;
	stk[++tp]=now;for(int v:vc[now]){
		if(!dfn[v]){
			tar(v);low[now]=min(low[now],low[v]);
			if(low[v]>=dfn[now]){
				++kcnt;bel[now].push_back(kcnt);//now为割点
				do bel[stk[tp]].push_back(kcnt);while(stk[tp--]!=v);
			}
		}
		else low[now]=min(low[now],dfn[v]);
	}
}

仙人掌上树

每个简单环(包括二元环)为点双,两点一边不算点双直接连,方方不相接,每个环抽出一个作为根连向方点,方点连向剩余结点,已经父->子定向,边权具体分析

void tar(int now,int lst){
	dfn[now]=low[now]=++dcnt;stk[++tp]=now;
	for(auto[v,w]:gp[now]) if(v!=lst){
		if(!dfn[v]){
			tar(v,now);low[now]=min(low[now],low[v]);
			if(low[v]>dfn[now]) vc[now].push_back((ed){v,w});
		}
		else if(dfn[v]<low[now]){
			low[now]=dfn[v];
			vc[v].push_back((ed){++fc,0});rt[fc]=v;
			for(int t=tp;stk[t]!=v;--t) vc[fc].push_back((ed){stk[t],0});
		}
	}--tp;
}

强连通分量

void tar(int now){
	dfn[now]=low[now]=++dfscnt;
	stk[++tp]=now;ist[now]=1;
	for(int v:vc[now]){
		if(!dfn[v]){
			tar(v);low[now]=min(low[now],low[v]);
		}
		else if(ist[v]) low[now]=min(low[now],dfn[v]);
	}
	if(dfn[now]==low[now]){
		++kcnt;do ist[stk[tp]]=0,bel[stk[tp]]=kcnt;while(stk[tp--]!=now);
	}
}
``
posted @ 2024-08-01 16:58  Albertvαn  阅读(28)  评论(0)    收藏  举报