学习手记(2021/3/19~2022/8/25)

上一篇有点多就开新的了

文章目录

    • 树哈希
    • wqswqswqs二分
    • 单位根反演
    • 威佐夫博弈
    • 范德蒙德行列式
    • BEST定理
    • 平面图欧拉定理
    • FWT转移矩阵的推导
    • 保序回归
    • 二分图最大团
    • 一些数学小结论
      • 范德蒙德卷积
      • 乘转加卷积
      • 斐波那契前缀和
      • 杜教筛+μ\muμ
      • 单幂转下降幂
      • 下降幂X组合数
      • 多项式gcd
      • 无逆元求行列式
    • 其他小技巧


树哈希

额方法很多随便找个都可以用,是有根树的,无根树的哈希要换根加个数据结构。
fx=∑y∈sonxfy×P(sizy)f_x=\sum_{y\in son_x}f_y\times P(siz_y)fx=ysonxfy×P(sizy)
P(x)P(x)P(x)是一个不重的函数就行来,可以用pxp^{x}px,第xxx个质数或者ωnx\omega_{n}^xωnx都可以。
或者
fx=sizx×∑y∈sonxfyP(i)f_x=siz_x\times\sum_{y\in son_x}f_yP(i)fx=sizx×ysonxfyP(i)
不过这个的fyf_yfy需要按照大小排序(不然就是有序的儿子了)


wqswqswqs二分

一种二分斜率的方法。

对于一个有限制的凸函数问题(求最大值但是斜率不断减小,或者求最小值但是斜率不断增大),我们不知道这个凸函数但是我们可以设一条直线y=kx+by=kx+by=kx+b与这个函数相切。

然后当y=kx+by=kx+by=kx+b且到我们要求的点的时候就是答案了。

主要的难点在于确定凸函数的定义和二分kkk的时候如何求出bbb的最值。

需要特别注意的一点就是wqswqswqs最后二分出来的结果求得的并不一定是合法的方案,可能是与合法方案答案相同的(也就是这个凸函数恰好切到一段斜率与二分相等的位置)。

常见的凸函数问题:

  • 背包限制问题
  • 最小生成树限制问题
  • 费用流模型问题

单位根反演

补一下上个手记剩下的
[k∣n]=1n∑i=0n−1ωni×k[k|n]=\frac{1}{n}\sum_{i=0}^{n-1}\omega_{n}^{i\times k}[kn]=n1i=0n1ωni×k
一般和二项式定理套


威佐夫博弈

两堆石头可以选择取走一堆或两堆的相同个数,求是否先手必胜。
证明:设石头个数a<ba<ba<b那么若⌊(b−a)×1+52⌋=a\lfloor (b-a)\times \frac{1+\sqrt 5}{2}\rfloor=a⌊(ba)×21+5=a则后手必胜,否则先手必胜。


范德蒙德行列式

对于矩阵FFF
∣x10x20...xm−10xm0x11x21...xm−11xm1...............x1n−1x2n−2...xm−1n−1xmn−1x1nx2n...xm−1nxmn∣\begin{vmatrix} x_1^0 & x_2^0 & ... & x_{m-1}^0 & x_{m}^0\\ x_1^1 & x_2^1 & ... & x_{m-1}^1 & x_m^1\\ ... & ... & ... & ... & ...\\ x_1^{n-1} & x_2^{n-2} & ... & x_{m-1}^{n-1} & x_{m}^{n-1}\\ x_1^{n} & x_2^{n} & ... & x_{m-1}^{n} & x_{m}^{n} \end{vmatrix}x10x11...x1n1x1nx20x21...x2n2x2n...............xm10xm11...xm1n1xm1nxm0xm1...xmn1xmn

也就是Fi,j=xijF_{i,j}=x_i^jFi,j=xij时,
det⁡F=∏i<j(xj−xi)\det F=\prod_{i<j}(x_j-x_i)detF=i<j(xjxi)


BEST定理

记欧拉图GGG,记这张图不同的欧拉回路数量为ec(G)ec(G)ec(G)那么有
ec(G)=troot(G,k)∏v∈V(deg(v)−1)!ec(G)=t^{root}(G,k)\prod_{v\in V}(deg(v)-1)!ec(G)=troot(G,k)vV(deg(v)1)!
其中troot(G,k)t^{root}(G,k)troot(G,k)表示图GGGkkk为根的外向树数量


平面图欧拉定理

记连通无向平面图GGG点集VVV和边集EEE还有区域个数FFF那么有
V+F=E+2V+F=E+2V+F=E+2


FWT转移矩阵的推导

先定义最初始的矩阵c(i,j)c(i,j)c(i,j)表示FWT(x)[i]=∑j=0nc(i,j)xjFWT(x)[i]=\sum_{j=0}^nc(i,j)x_jFWT(x)[i]=j=0nc(i,j)xj
然后
FWT(A)[k]FWT(B)[k]=FWT(C)[k]FWT(A)[k]FWT(B)[k]=FWT(C)[k]FWT(A)[k]FWT(B)[k]=FWT(C)[k]
∑i=0n∑j=0nAiBjc(k,i)c(k,j)=∑i=0nCic(k,i)\sum_{i=0}^n\sum_{j=0}^nA_iB_jc(k,i)c(k,j)=\sum_{i=0}^nC_ic(k,i)i=0nj=0nAiBjc(k,i)c(k,j)=i=0nCic(k,i)
又有
Ck=∑ioptj=kAiBjC_k=\sum_{i\ opt\ j=k}A_iB_jCk=i opt j=kAiBj
∑i=0n∑j=0nAiBjc(k,i)c(k,j)=∑i=0n∑j=0nc(k,ioptj)AiBj\sum_{i=0}^n\sum_{j=0}^nA_iB_jc(k,i)c(k,j)=\sum_{i=0}^n\sum_{j=0}^nc(k,i\ opt\ j)A_iB_ji=0nj=0nAiBjc(k,i)c(k,j)=i=0nj=0nc(k,i opt j)AiBj
就有
c(k,i)c(k,j)=c(k,ioptj)c(k,i)c(k,j)=c(k,i\ opt\ j)c(k,i)c(k,j)=c(k,i opt j)
然后对于每个i,ji,ji,j分位考虑然后根据optoptopt的性质推出FWTFWTFWT的矩阵再求逆推出IFWTIFWTIFWT的矩阵就好了。


保序回归

对于序列aaa,有一些形如ai≤aja_i\leq a_jaiaj的限制,把xxx变为yyy的代价为∣x−y∣k|x-y|^kxyk,要求使得代价和最小。

常用的方法:

  1. 整体二分:考虑对于一个midmidmid,把每个数设置为mid+k(k∈{0,1})mid+k(k\in\{0,1\})mid+k(k{0,1}),然后求解出最小答案之后继续分0/10/10/1下去二分。求解的方法一般为:最大权闭合子图(一般情况),dp等。
  2. 正常二分+单调性解决。
  3. kkk不是很大的情况下可以考虑斜率优化。
  4. 神必方法。

玄题待补:
#6518. 「雅礼集训 2018 Day11」序列
P5294 [HNOI2019]序列


二分图最大团

二分图最大团(即选出的集合中左边的每个点向右边的每个点都有连边)为:总点数减去最大独立集


一些数学小结论

范德蒙德卷积

∑i=0k(ni)(mk−i)=(n+mk)\sum_{i=0}^k\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k}i=0k(in)(kim)=(kn+m)

乘转加卷积

是乘转加但是不完全是
n×m=(n+m2)−(n2)−(m2)n\times m=\binom{n+m}{2}-\binom{n}{2}-\binom{m}{2}n×m=(2n+m)(2n)(2m)

斐波那契前缀和

∑i=1nfi=fi+2−1\sum_{i=1}^nf_i=f_{i+2}-1i=1nfi=fi+21

杜教筛+μ\muμ

怎么说是一个挺神奇的技巧吧就是因为μ∗I=ϵ\mu*I=\epsilonμI=ϵ所以假设我们要求f∗μf*\mufμ的前缀和,然后f∗μ∗I=f∗ϵf*\mu*I=f*\epsilonfμI=fϵ所以我们如果能快速的求fff的前缀和就可以快速的用杜教筛求f∗μf*\mufμ的前缀和。

具体的例子比如说斐波那契数列Fbi∗μFbi*\muFbiμ,和矩阵乘法配合能有奇效的样子

单幂转下降幂


f(x)=∑i=0naixi=∑i=0nbixi‾f(x)=\sum_{i=0}^na_ix^i=\sum_{i=0}^nb_ix^{\underline i}f(x)=i=0naixi=i=0nbixi
根据
xn=∑i=0n{ni}xi‾x^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}x^{\underline i}xn=i=0n{ni}xi
得到
bi=∑j=in{ji}ajb_i=\sum_{j=i}^n\begin{Bmatrix}j\\i\end{Bmatrix}a_jbi=j=in{ji}aj
时间复杂度O(n2)O(n^2)O(n2)

下降幂X组合数

下降幂转组合数第二项
(nk)×km‾=(n−mk−m)×nm‾\binom{n}{k}\times k^{\underline{m}}=\binom{n-m}{k-m}\times n^{\underline{m}}(kn)×km=(kmnm)×nm

多项式gcd

记多项式F(x)F(x)F(x)各项系数的gcdgcdgcdd(F(x))d(F(x))d(F(x)),那么有
d(F(x)×G(x))=d(F(x))×d(G(x))d(F(x)\times G(x))=d(F(x))\times d(G(x))d(F(x)×G(x))=d(F(x))×d(G(x))

无逆元求行列式

使用辗转相除法,第iii行的理论操作次数应该是O(n+log⁡a)O(n+\log a)O(n+loga)因为ai,ia_{i,i}ai,i每次期望除二。

ll Det(){ll ans=1;for(ll i=1;i<=n;i++){if(!a[i][i]){for(ll j=i+1;j<=n;j++)if(a[j][i]){swap(a[i],a[j]);ans=P-ans;break;}}for(ll j=i+1;j<=n;j++){while(a[j][i]){if(a[j][i]<a[i][i]){swap(a[i],a[j]);ans=P-ans;if(!a[j][i])break;}ll rate=P-a[j][i]/a[i][i];for(ll k=i;k<=n;k++)(a[j][k]+=rate*a[i][k]%P)%=P;}}}for(ll i=1;i<=n;i++)ans=ans*a[i][i]%P;return (ans+P)%P; 
}

(1,1)(1,1)(1,1)出发不经过对角线走到(n,m)(n>m)(n,m)(n>m)(n,m)(n>m)的方案数是
(n+mm)−(n+mm−1)\binom{n+m}{m}-\binom{n+m}{m-1}(mn+m)(m1n+m)


其他小技巧

  • a+b=min⁡(a,b)+max⁡(a,b)=a∣b+a&ba+b=\min(a,b)+\max(a,b)=a|b+a\&ba+b=min(a,b)+max(a,b)=ab+a&b
  • bitset的count是O(nω)O(\frac{n}{\omega})O(ωn)的!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【模板】最大流之上下界可行流

ACM模板 目录无源汇上下界可行流有源汇上下界最大流有源汇上下界最小流无源汇上下界可行流 问题&#xff1a; 给定一个网络&#xff0c;求一个流满足&#xff1a;每条边的流量处在给定的下界和上届[lower,upper]之间&#xff0c;满足流量守恒 首先我们在原网络中确定一个全部是…

Sangmado 公共基础类库

Sangmado&#xff08;发音 /sɔŋmɑːdu:/ ‘桑麻渡’&#xff09;涵盖了支撑 .NET/C# 项目开发的最基础的公共类库&#xff0c;为团队在不断的系统开发和演进过程中发现和积累的最公共的代码可复用单元。Sangmado 公共类库设计原则&#xff1a;独立性&#xff1a;不与任何业务…

牛客挑战赛48E-速度即转发【带修莫队,分块】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11161/E 题目大意 给出nnn个数字的一个序列&#xff0c;mmm个操作。 给出l,r,kl,r,kl,r,k&#xff0c;求一个最大的xxx使得∑ilrmax{ai−x,0}≥k\sum_{il}^rmax\{a_i-x,0\}\geq k∑ilr​max{ai​−x,0}≥k单点修改 解题思…

L2-002 链表去重

给定一个带整数键值的链表 L&#xff0c;你需要把其中绝对值重复的键值结点删掉。即对每个键值 K&#xff0c;只有第一个绝对值等于 K 的结点被保留。同时&#xff0c;所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15&#xff0c;你需要输出去重后…

【模板】卡特兰数

ACM模板 目录Catalan数证明卡特兰数应用Catalan数证明 1.卡特兰数递推式&#xff1a; an{1,n0∑i0n−1aian−1−i,n>0a_n\begin{cases} 1,n0\\\sum_{i0}^{n-1}a_ia_{n-1-i},n>0\end{cases} an​{1,n0∑i0n−1​ai​an−1−i​,n>0​ 2.卡特兰数组合数&#xff1a; an…

【活动(深圳)DevOps/.NET 微服务 秋季分享会】火热报名中!

无论身处开发还是运维岗位&#xff0c;您一定深刻地感受着业务需求带来的快速交付压力。在科技迅速发展的时代&#xff0c;传统行业积极开展数字化转型以在激烈竞争中脱颖而出&#xff0c;新兴行业不停歇地验证业务模式以找准市场定位&#xff1b;软件与行业变得密不可分&#…

P7443-加边【博弈论】

正题 题目链接:https://www.luogu.com.cn/problem/P7443?contestId41429 题目大意 nnn个点的一棵有根树&#xff0c;两个人从一号点开始进行有向图博弈。 告诉你Alice是先手还是后手&#xff0c;然后你可以选择加一条链接(u,v)(u,v)(u,v)的有向边&#xff0c;权值为AauBavA\…

L2-004 这是二叉搜索树吗?

一棵二叉搜索树可被递归地定义为具有下列性质的二叉树&#xff1a;对于任一结点&#xff0c; 其左子树中所有结点的键值小于该结点的键值&#xff1b; 其右子树中所有结点的键值大于等于该结点的键值&#xff1b; 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”&#x…

【模板】序列自动机

ACM模板 目录构建序列自动机子序列查询构建序列自动机 ne[i][j]存的是在字符串 s 中第 iii 位后面第一个 j(0<j<26)j(0<j<26)j(0<j<26) 字母出现的位置。 void build(char s[]) {int nstrlen(s1);for(int in;i;i--){for(int j0;j<26;j)ne[i-1][j]ne[i][j]…

微软正式发布Azure IoT Central

微软正式发布Azure IoT Central&#xff0c;这是一个面向物联网的软件即服务解决方案。借助该服务&#xff0c;微软旨在提供一种设计、开发、配置和管理IoT设备的低代码方式&#xff0c;同时提供开箱即用的安全性、可伸缩性以及与流程&应用程序集成。Azure IoT Central构建…

ARC115E-LEQ and NEQ【容斥,dp,线段树】

正题 题目链接:https://atcoder.jp/contests/arc115/tasks/arc115_d 题目大意 nnn个数字的序列xxx&#xff0c;第xi∈[1,Ai]∩Zx_i\in [1,A_i]\cap Zxi​∈[1,Ai​]∩Z。要求相邻的不同&#xff0c;求方案数。 1≤n≤5105,1≤Ai≤1091\leq n\leq 5\times 10^5,1\leq A_i\leq 1…

点分治(树分治)

文章目录介绍&#xff1a;题目&#xff1a;做法&#xff1a;模板题 [P3806 【模板】点分治1](https://www.luogu.com.cn/problem/P3806)代码&#xff1a;介绍&#xff1a; 将原问题分解成若干相同形式&#xff0c;相互独立的子问题&#xff0c;各个击破 一般用来解决有关树上路…

【模板】KMP算法、fail树

ACM模板 目录KMP字符串Fail失配树KMP字符串 肖然大佬视频讲解 子串&#xff1a; 从原串中选取连续的一段&#xff0c;即为子串&#xff08;包括空串&#xff09; 前缀&#xff1a; pre(s,k)pre(s,k)pre(s,k) 为 s 前 k 个字符构成的子串 后缀&#xff1a; suf(s,k)suf(s,k)suf…

.NET Standard 2.1 公布

原文: Announcing .NET Standard 2.1校对: Cloud自从大约一年前发布 .NET Standard 2.0以来&#xff0c;我们已经向 .NET Core 2.1 发布了两个更新&#xff0c;并即将发布 .NET Core 2.2 。 现在是时候更新 Standard 了&#xff0c;包括一些新的概念以及一些小改进&#xff0c;…

CF708E-Student‘s Camp【数学期望,dp】

正题 题目链接:https://www.luogu.com.cn/problem/CF708E 题目大意 有n∗mn*mn∗m的矩形网格&#xff0c;然后每次每行最左边和最右边的格子各有pcdp\frac{c}{d}pdc​的概率会消失&#xff0c;进行kkk次。 求最后所有格子依旧四联通的概率&#xff0c;在%(1097)\%(10^97)%(1…

P3806 【模板】点分治1

模板题 P3806 【模板】点分治1 题目描述 给定一棵有 n 个点的树&#xff0c;询问树上距离为 k 的点对是否存在。 详讲 关于点分治具体内容可以看这个 这里主要是详细讲讲代码&#xff1a; getrt是用来求重心&#xff0c;我们利用树型dp的思维来做&#xff0c;即找到该节点所…

ASP.NET Core中使用GraphQL - 第二章 中间件

前文&#xff1a;ASP.NET Core中使用GraphQL - 第一章 Hello World中间件如果你熟悉ASP.NET Core的中间件&#xff0c;你可能会注意到之前的博客中我们已经使用了一个中间件&#xff0c;这个中间件负责输出了当前查询的结果。中间件的定义&#xff1a;中间件是装载在应用程序管…

【模板】AC自动机

ACM模板 目录插入以及构建AC自动机【模板】AC自动机&#xff08;二次加强版&#xff09;ac自动机fail树上dfs序建可持久化线段树插入以及构建AC自动机 #include<queue> #include<string> const int N200010; struct node {int chd[26],fail,cnt; }tree[N]; void i…

ASP.NET Core中Ocelot的使用:基于服务发现的负载均衡

本系列相关文章&#xff1a;《ASP.NET Core中Ocelot的使用&#xff1a;API网关的应用》《ASP.NET Core中Ocelot的使用&#xff1a;基于Spring Clound Netflix Eureka的动态路由》本文将基于前两篇文章所述内容&#xff0c;继续介绍如何在服务发现和动态路由的基础上&#xff0c…

CF643F-Bears and Juice【组合数学】

正题 题目链接:https://www.luogu.com.cn/problem/CF643F 题目大意 题目有点奇怪就直接放翻译了 有 nnn 只熊和若干桶果汁和恰好一桶酒&#xff0c;每一天每只熊会选择一些桶&#xff08;可能不选&#xff09;并各喝一 杯&#xff0c;喝到酒的熊会去睡觉并不再回来&#xff…