组合数学

组合数学#

一些必要 trick#

  1. 推式子,先提 Π 到最前面,然后从后往前合并,必要时考虑更改 的取值
  2. 看到次方变为斯特林数,xn=i=0n{ni}(xi)i!=i=0ni=1m(1)miin(mi)!(xi)
  3. 注意莫反、欧反的形式

推式子基本原理#

  1. 先把 移到最前面。
  2. 将多个 排序,范围更小的放在前面。
  3. 将只与当前 有关的式子尽量往前提。
  4. 将能简化式子的特殊边界提出来。
  5. 从后往前处理。

基本概念#

  1. am 表示 am 次下降幂。
  2. am 表示 am 次上升幂。

递推式#

(nm)=(n1m)+(n1m1)

证明

从组合意义上推导,在 n 个人中选 m 个相当于单独考虑最后一人,若他要选,则为(n1m1)他不选则为 (n1m)

吸引/相伴等式#

(nm)(n1m1)=nm(nm)(n1m)=nnm(nm)(nm1)=nm+1m

另外的形式:

k(nk)=n(n1k1)(nk)(nk)=n(n1k)

上指标反转#

(nm)=(1)m(mn1m)

证明

(nm)=nmm!=n×(n1)×(n2)×...×(nm+1)m!=(1)m×(n)×(1n)×...×(mn1)m!=(1)m×(mn1)mm!=(1)m(mn1m)

三项式系数恒等式#

(nm)(mk)=(nk)(nkmk)

等式两边拆开约分即可得证。

平行求和#

(n0)+(n+11)+...+(n+mm)=i=0m(n+ii)=(n+m+1m)mN

证明

(n+m+1m)用加法公式展开即可。

上指标求和#

i=0n(im)=(n+1m+1)

证明

从组合意义入手,相当于我从 n+1 个数中选 m+1 个数,先假设选 i,那么 i 前面还需要选 m 个数,枚举这个 i,即为答案。

也可通过微积分求导知识进行证明,这里不再详述。

练习一:#

i=0m(n+ii)

i=0m(n+ii)=i=0m(n+in+ii)=i=0m(n+in)=(n+m+1n+1)

下指标求和(整行)#

i=0n(ni)=2n

证明

i=0n(ni)=i=0n(ni)1ni1i=(1+1)n=2n

交错求和#

k=0m(1)k(nk)=(1)m(n1m),mZ

证明

k=0m(1)k(nk)=k=0m(kn1k)上指标反转=(mnm)平行求和=(1)m(n1m)上指标反转

下指标卷积(范德蒙德卷积)#

i=0k(ni)(mki)=(n+mk)

证明

n 个数中选 i 个数,再从 m 个数中选 ki 个数,相当于从 n+m 个数中选 k 个数。

练习二:#

i=0m(ni)(mi)

i=0m(ni)(mi)=i=0m(ni)(mmi)=(n+mm)

上指标卷积#

i=0n(ia)(nib)=(n+1a+b+1)

证明

相当于从左边 i 个中选 a 个,右边 ni 个中选 b 个。等于从 n 个中选 a+b 个,枚举分割点 i

练习三:#

i=mn(1)i(ni)(im)

i=mn(1)i(ni)(im)=i=mn(1)i(nm)(nmim)=(nm)i=mn(1)i(nmim)=(nm)i=0nm(1)i+m(nmi)=(nm)(1)mi=0nm(1)i(nmi)×1nmi=(nm)(1)m0nm=(1)m[n=m]

例题:P2791 幼儿园篮球题

至此,组合数学的基本内容已结束。

总结如下图:

img

Lucas定理#

(nm)(npmp)(nmodpmmodp)(modp)

其中 p 为质数。

证明

注意到 (pn)[n=pn=0](modp)

因此 (a+b)pap+bp(modp)

对于 f(x)=(1x)n,f(x)[xm]=(nm)

我们现在对 f(x) 做一点变换,

f(x)=(1+x)n=(1+x)p×np(1+x)nmodp=((1+x)p)np(1+x)nmodp

f(x)(1+xp)np(1+x)nmodp(modp)

所以对于 f(x),前半部分 ((1+x)p)np 一定为 p 的倍数,后半部分 (1+x)nmodp 一定小于 p ,设 h(x)=(1+xp)npg(x)=(1+x)nmodp

f(x)[xm]=h(x)[xkp]×g(x)[xr](modp)

所以就有 m=kp+rk=mkr=mmodp

就可以得出:

(nm)(npmp)(nmodpmmodp)(modp)

二项式定理#

(x+y)n=i=0n(ni)xniyi

拓展——下降(上升)幂二项式定理#

(x+y)n=i=0n(ni)xniyi(x+y)n=i=0n(ni)xniyi

证明(这里不用数学归纳法进行证明)

i=0n(ni)xniyi=i=0nn!(ni)!i!xniyi=i=0nn!xniyi(ni)!i!=n!i=0n(xi)(yni)根据范德蒙德卷积)=n!(x+yn)=(x+y)n

上升幂方法相同。

错排#

定义:一个满足 aii 的序列。

推导式

fn=(n1)(fn1+fn2)

证明

若当前将 1 放到位置 k(k1),那么 k 的放置位置可以分类讨论:

  1. k 放在位置 1 上,那么还会剩下 n2 个数错排,方案数为 fn2

  2. k 放到某个位置 t(t1),那么假设 1 号位置填上了 P,则 p1pk,此时可以考虑一个新序列,把 1 去掉,此时方案数为 fn1

例题:P7438 更简单的排列计数

cycπ 将长为 n 的排列 π 当成置换时所能分解成的循环个数。给定两个整数 n,k 和一个 k1 次多项式,对 1mn 求:

πF(cycπ)

其中 π 是长度为 m 且不存在位置 i 使得 πi=i 的排列。

πF(cycπ)=πi=0k1fi×cycπi=πi=0k1j=0i1fi{ij}(cycπj)j!=j=0k1j!i=jk1fi{ij}π(cycπj)

我们发现,i=jk1fi{ij}π(cycπj) 无关,所以可以将其预处理。

j!fi{ij} 都是能够优先处理的。现在考虑 (cycπj) 的处理。

定义函数 Ct,j 为长度为 t ,环数为 j 的排列数,Pt,j=|π|=t(cycπj) ,通过推导,能够得出:

Ct,j=(n1)(Ct1,j+Ct2,j1)Pt,j=(n1)(Pt1,j+Pt2,j1+Pt1,j1)

那么答案即为:

j=0k1j!i=jk1fi{ij}k=1nPi,j

其中 i 的复杂度为 O(n)j 的复杂度为 O(k),总复杂度为 O(nk),不会超时。

鸽巢定理#

原理:将 (i=1npi)n+1 个东西放入 n 个盒子中,一定存在一个盒子 i,使得第 i 个盒子至少装了 pi 个物品。

证明(反证法)

xN1xn,ai<piai<(pi)n<(pi)n+1

与条件矛盾,故成立。

练习四#

有十个数 a1,a2...a10 满足 1i101ai60,证明能够从 ai 中挑出两个交为空的子集,使得它们的和相等。

证明

两个交为空的子集和相等,所以加上交集后和仍不变,总共有 210=1024,但值域仅为 [0,600],故能够选出。

练习五#

证明一张有超过 1 个点的简单无向图必定有两点度数相等。

证明

考虑分类讨论:

  1. 2 个度数为 0 的点,符合条件。

  2. 1 个度数为 0 的点,则第 n 个点需要连 n1 条边,故至少有一个点符合。

  3. 没有度数为 0 的点,那么边数的范围为 [1,n1],所以符合。

练习六#

证明能从任意 11 个实数中挑选出 4 个数 a,b,c,d 满足:

(ac+bd)212(a2+b2)(c2+d2)

证明

我们令 x=(a,b),y=(c,d)。原式变为:xy22|x||y|。那么就有:cos<x,y>=xy|x||y|22

xy 的夹角为 45 度。然后我们发现,11 个实数中必定有至少 6 个正数或负数,故我们只需选择正负性相同的 4 个数字,这样两条向量一定在同一象限。因为我们有在同一象限的 3 条向量,每两条之间最大夹角小于 45 度。故得证。

容斥原理#

对于一个集合 S 的一部分子集构成的簇 P 有:

|TPT|=QP(1)|Q|1|TQT|

基本容斥原理为高中必学内容,这里对此不过多阐述。

二项式反演#

结论

F(n)=i=mn(ni)G(i)G(n)=i=mn(1)ni(ni)F(i)F(n)=i=mn(im)G(i)G(n)=i=mn(1)im(im)F(i)

证明

F(n)=i=mn(ni)j=mi(1)ij(ij)F(j)

=j=mnF(j)i=jn(ni)(ij)(1)ij

=j=mnF(j)i=jn(nj)(njij)(1)ij

=j=mn(nj)F(j)i=jn(njij)(1)ij

=j=mn(nj)F(j)i=0nj(nji)(1)i

=j=mn(nj)F(j)[n=j]

=F(n)

第二种形式证明类似。

练习七 BZOJ2839 集合计数(P10596)

n 个元素,问有多少种选择若干个子集的方案,使得选出的子集的交集恰好为 k

0<kn106

我们先考虑子集的交集大小至少为 i 的方案,记为 F(i),那么相当于先挑出 i 个,再从 ni 个中计算出剩余元素的子集的数量即为 2ni,然后我们需要在这些剩余子集中的挑选子集方案,即为 22ni,考虑到当剩余子集为空时,方案就为 i ,舍去,所以可得 F(i)=(ni)(22ni1)

然后我们考虑答案函数 G(k),因为 F(i) 在求解时会对所有交集大小大于等于 i 的情况计数,理想情况下应该计数 1 次,但是经过画图可以发现,当我们处理类似 G(i+1) 的情况时,其也会对 F(i) 产生贡献,贡献为 (i+1i),所以可以得出结论:

F(i)=j=in(ji)G(j)

进行二项式反演可得:

G(k)=i=kn(ik)(1)ikF(i)=i=kn(1)ik(ik)(ni)(22ni1)

现在就可以解决了。

练习八 BZOJ3622 已经没有什么好害怕的了(P4859)

有两个序列 ai,bi 保证所有元素互不相同。你需要重排 b 序列,使得恰好有 ki 满足 ai>bi。,求方案数。

0<kn2000

先将 a 序列排序,使其单调上升。

考虑 dpi,j 表示考虑前 i 对数,恰有 jai>bi ,这样无法转移。

还是先考虑前 i 个中至少 jai>bi,设为 dpi,j,那么就有

dpi,j=dpi1,j+dpi1,j1(cnt(ai)j+1)

cnt(ai) 表示在当前 i 位置,有多少个 b 满足 ai>b

然后设 F(i) 表示钦定 i 对符合条件的方案数,G(i) 表示恰好 i 对的方案数。在当前位置,由于钦定 i 对符合,所以剩下的数随便排序,就为 Anini=(n1)!,就有:

(ni)!dpn,i=F(i)=j=in(ji)G(j)

反演可得:

G(k)=i=kn(ik)(1)ikF(i)=i=kn(ik)(1)ik(ni)!dpn,i

然后就能够解决啦。

练习九 CF997C Sky Full of Stars

有一个 n×n 的矩阵,将其三染色,使得至少有一行或者一列同色,问方案数。

n106

我们先钦定有 ij 列同色,记为 F(i,j)

F(i,j)={3(ni)n+i(ni)j=03(nj)n+j(nj)i=03(ni)(nj)+1(ni)(nj)i0,j0

考虑恰好有 ij 列同色,记为 G(i,j)

我们需要求至少一行一列,所以可以用 G(0,0)

F(x,y)=i=xnj=yn(ix)(jy)G(i,j)G(x,y)=i=xnj=yn(1)i+jxy(ix)(jy)F(i,j)G(0,0)=3n2+i=1n(1)ni(ni)(F(0,i)+F(i,0))+i=1nj=1n(1)2nij(ni)(nj)F(i,j)G(0,0)=3n2+i=1n(1)ni(ni)(F(0,i)+F(i,0))+i=1nj=1n(1)i+j(ni)(nj)F(i,j)

F(i,j) 代入原式子。后面那坨东西即为:

=i=1nj=1n(1)i+j(ni)(nj)3×3(ni)(nj)=3n2+1i=1n(ni)(1)i3inj=1n(nj)(1)j3jn3ij

现在发现 3ij 是最不好处理的,因为它使得不能使用二项式定理,先考虑这个的处理方法。

=3n2+1i=1n(ni)(1)i3inj=1n(nj)(1)j3j(in)=3n2+1i=1n(ni)((1)i3in(13(in))n1)G(0,0)=3n2+i=1n(1)ni(ni)(F(0,i)+F(i,0))+(1)i3inj=1n(nj)(1)j3jn3ij

现在就可以处理了。

练习十(第二类斯特林数通项求法)#

{nm} 表示把 n 个不同的物品划分为 m 个集合构成簇的方案数(不允许空集)。

我们先设 F(n,m)={nm}G(n,m) 表示允许存在空集时的方案数。

易得 G(n,m)=mnm!

钦定非空集合数,可以有: G(n,m)=i=1m(mi)F(n,i)

进行反演可得:F(n,m)=i=1m(mi)(1)miG(n,i)

代入可得:{nm}=fn,m=i=1m(1)mi(mi)ini!=i=1m(1)miini!(mi)!

这也是第二类斯特林数的通项公式。

卡特兰数#

应用#

Catalan 数列 Hn 是以下问题的方案数:

  1. 有一个大小为 n×n 的方格图,左下角为 (0,0) 右上角为 (n,n),从左下角开始每次都只能向右或者向上走一单位,不走到对角线 y=x 上方(但可以触碰)的情况下到达右上角有多少可能的路径?
  2. 在圆上选择 2n 个点,将这些点成对连接起来使得所得到的 n 条线段不相交的方法数?
  3. 一个栈的进栈序列为 1,2,3,,n 有多少个不同的出栈序列?
  4. n 个结点可构造多少个不同的二叉树?
  5. n 对括号能组成的括号序列数?

递归/组合公式#

Hn={i=0n1HiHni1(n2)1(n=0,1)=(2nn)(2nn1)

通项公式#

Hn=(2nn)n+1

证明

Hn=i=0n1HiHni1(n2)

其中 H0=1,H1=1。设它的普通生成函数为 H(x),利用卷积,得到它的一个方程。

H(x)=n0Hnxn=1+n1i=0n1HixiHni1xni1x=1+xi0Hixin0Hnxn=1+xH2(x)

解得

H(x)=1±14x2x

那么这就产生了一个问题:我们应该取哪一个根呢?我们将其分子有理化:

H(x)=2114x

代入 x=0,我们得到的是 H(x) 的常数项,也就是 H0。当

H(x)=21+14x 的时候有 H(0)=1,满足要求。而另一个解会出现分母为 0 的情况(不收敛),舍弃。

因此我们得到了卡特兰数生成函数的封闭形式:

H(x)=114x2x

接下来我们要将其展开。使用牛顿二项式定理。

(14x)12=n0(12n)(4x)n=1+n1(12)nn!(4x)n

其中

(12)n=121232(2n3)2=(1)n1(2n3)!!2n=(1)n1(2n2)!2n(2n2)!!=(1)n1(2n2)!22n1(n1)!

于是

(14x)12=1+n1(1)n1(2n2)!22n1(n1)!n!(4x)n=1n1(2n2)!(n1)!n!2xn=1n1(2n1n)1(2n1)2xn

带回原式得到

H(x)=114x2x=12xn1(2n1n)1(2n1)2xn=n1(2n1n)1(2n1)xn1=n0(2n+1n+1)1(2n+1)xn=n0(2nn)1n+1xn

这样我们就得到了卡特兰数的通项公式。

Min/Max容斥#

定义#

公式

maxS=TS(1)|T|1minTmaxkthS=TS(1)|T|k(|T|1k1)minT

min/max 调换也成立

证明1(其实是我懒得写了摘的)

maxkthS=TS(1)|T|k(|T|1k1)minT

=xSxxTS(1)|T|k(|T|1k1)[minT=x]

f(x) 表示 S 中大于 x 的元素构成的集合。

=xSxxTf(x)(1)|T|k(|T|1k1)

枚举 |T|:

=xSxl=1|f(x)|(1)lk(|f(x)|1l1)(l1k1)

=xSxl=1|f(x)|(1)lk(|f(x)|1k1)(|f(x)|klk)

=xSx(|f(x)|1k1)l=1|f(x)|(1)lk(|f(x)|klk)

易知 |f(x)|<k 时无贡献。

=xSx(|f(x)|1k1)l=0|f(x)|k(1)l(|f(x)|kl)

=xSx(|f(x)|1k1)[|f(x)|=k]

=maxkthS

证明2

设存在一个以集合大小为自变量的函数 f 满足 maxS=TSf(|T|)minT

S 中元素从大到小排列为 x1,x2,,xm,则对于 xi,其在左侧的贡献是 i=1,在右侧的贡献为 j=0i1(i1j)f(j+1)

若等式成立,必有 [i=1]=j=0i1(i1j)f(j+1)

F(i)=[i+1=1] (即 [i=1]=F(i1)),G(i)=f(i+1),则 F(i)=j=0i(ij)G(j)

反演一下,得

G(i)=j=0i(ij)(1)ijF(j)

因为 F(i) 只在 i=0 时有值,所以 G(i)=(1)i

故有 f(i)=G(i1)=(1)i1

因而构造成立。

kthminmax 证明同理

应用#

Min-Max 容斥及推广常用于解决 元素都出现的期望时间 的问题,处理方法:

ti 表示第 i 个元素出现的时间,则:

  • max(S) 表示 St 的最大值,即所有元素出现的时间。
  • min(S) 表示 St 的最小值,即至少一个元素出现的时间。

根据 Min-Max 容斥可以用 min(S)max(S)

等式两边同时取期望,由于期望的线性运算,可以直接放到 中,即

E(max(S))=TS(1)|T|1E(min(T))

然后发现 E(minT) 很好求,就是一个元素出现的期望时间。

即可求解。

练习十一#

给定三个序列 ai,bi,ci,求

1i<jnmaxai+aj,bi+bj,ci+cjminai+aj,bi+bj,ci+cj

n2×105

先用容斥拆开 max

    maxai+aj,bi+bj,ci+cj=ai+aj+bi+bj+ci+cj    minai+aj,bi+bjminai+aj,ci+cjminbi+bj,ci+cj    +minai+aj,bi+bj,ci+cj

最后一项与原式抵消掉,剩下的两种 min 中,第一种可以直接求出,第二种可以化成以下形式:

min(a,b)=a[a<b]

所以可以变成:

aiaj[ai+aj<bi+bj]aiaj[ai+aj<ci+cj]bibj[bi+bj<ci+cj]aiaj[aibi<bjaj]aiaj[aici<cjaj]bibj[bici<cjbj]

这个实质就是求顺序对(二维偏序),总复杂度 O(nlogn)

练习十二#

n 个元素,每次会随机选择一个,有 pi 的概率选择第 i 个,问第一次所有元素都被选择过的期望时间。

1n20

设每个元素被选择时的时间为 ti,那么所有元素被选就是 tmaxS,套上公式:

E(maxS)=TS(1)|T|1E(minT)

E(minT) 的含义实际上就是第一次选到 T 中元素的期望时间,一次选中的概率是 1xTpx ,期望时间就是其倒数 xTpx

然后套入式子计算即可,O(n2n)

练习十三 P4707 重返降世

n 个元素,每次会随机选择一个,有 piM 的概率选择第 i 个,问第一次有 k 元素被选择过的期望时间。

1ln103,n10kn,i=1npi=M104

相当于就是求 tik 小,思路大体上与上一题差不多,我们不妨改成求 nk 大,让 k=nk,就能得出式子:

E(maxkthS)=TS(1)|T|kE(minT)=TS(1)|T|k(|T|1k1)MxTpx

现在麻烦的是 MxTpx,我们发现所有 pi 之和不会超过 M,所以可以考虑计算每一种 xTpx 作为分母的项的系数之和。考虑设 dpi,j 表示前 i 个,分母和为 j​ 的项的系数和。

在转的时候会发现转不了,所以再设一个参数 l=|T|

那么就有 (|T|1k1)=|T|1|T|k(|T|2k1)

dpi,j,l=dpi1,jl1lkdpi1,jpi,l1

这个复杂度过不了,所以换方法,因为 (|T|1k1)=(|T|2k1)+(|T|2k2),所以:

dpi,j,l=dpi1,j,l+dpi1,jpi,l1dpi1,jpi,l

这样就是 O(nmk) 的了。

第二类斯特林数#

含义#

{nk} 表示将 n 个元素划分成 k非空子集的方案数。

特殊值#

{n0}=[n=0],{n1}={nn}=1(n>0){n2}=2n11(n>0),{nn1}=(n2)

递推式#

{nk}={n1k1}+k{n1k}

即考虑第 n 个元素放在哪个集合。要么在已经有的 k 个非空集合里选一个放进去,要么自己单开一个新的集合。

边界是 {n0}=[n=0]

第二类斯特林数生成函数#

一个盒子装 n 个物品且盒子非空的方案数是 [n>0]。我们可以写出它的EGF为

F(x)=n=1xnn!=ex1

由 EGF 卷积的组合意义,Fk(x) 就是 n 个有标号物品放到 k 标号盒子里的EGF。而第二类斯特林数是 n 个有标号物品放到 k 标号盒子里的方案数,所以要再除以一个 k!

1n!{nk}=[xn](ex1)kk!

通项公式#

{nk}=1k!i=0k(1)i{ki}(ki)n=i=0k(1)kiini!(ki)!

证明

设将 n 个有标号物品放到 k 个有标号盒子(允许空盒子)的方案数为 Gi;将 n 个有标号物品放到 k 个有标号盒子(不允许空盒子)的方案数为 Fi

Gi=kn, Gi=j=0i(ij)Fj

由二项式反演

Fk=i=0k(1)ki(ki)Gi=i=0k(1)ki(ki)in=i=0kk!(1)kiini!(ki)!

Fk 是有标号的盒子,第二类斯特林数是无标号盒子再除以一个 k!

{nk}=i=0k(1)kiini!(ki)!

第一类斯特林数#

含义#

[nk] 表示将 n 个元素排成 k轮换 的方案数。也即所有 n! 个排列中,构成的置换有 k 个环的排列数。

特殊值#

[n0]=[n=0],[nn]=1(n>0)[n1]=(n1)!(n>0),[nn1]=(n2)

递推式#

[nk]=(n1)[n1k]+[n1k1]

即考虑第 n 个元素放在哪个轮换里。要么在已经有的 k 个轮换里选一个位置插进去,方案数是 n1;要么自己单开一个新的轮换。

生成函数#

类似第二类斯特林数地,我们先考虑 1 个盒子,即 k=1[n1]=(n1)! 的 EGF:

F(x)=n=1(n1)!xnn!=n=1xnn=ln(1x)

那么 n 个元素组成 k 标号轮换的 EGF 为

Fk(x)k!=(1)klnk(1x)k!

1n![nk]=[xn](1)klnk(1x)k!

Ex:第一类斯特林数没有实用的通项公式。

特殊等式行之和#

我们知道一个有 n 个元素的排列和一个 n 个元素的置换一一对应,于是对所有置换中的轮换个数求和,我们有

k=0n[nk]=n!

通常幂、下降幂、上升幂转换#

互相转换公式#

xn=i=0n[nk]xkxn=k=0n(1)nk[nk]xkxn=k=0n{nk}xk=k=0n{nk}(xk)k!xn=k=0n{nk}(1)nkxk

证明都可以使用数学归纳法

反转公式#

把上面的式子结合起来即可。

k{nk}[km](1)nk=[mn]k[nk]{km}(1)nk=[m=n]

拓展公式#

  1. {n+1m+1}=k(nk){km}

组合意义:枚举 k 表示 n+1 号节点所在的集合之外剩下了 k 个节点,这 k 个节点要构成 m 个集合。

  1. [n+1m+1]=k[nk](km)

组合意义:还是枚举 n+1 号点所在环的大小,设为 t+1,那么方案数应该是 t![ntm],这 t![ntm] 个方案对应 [n0],[n1],,[nn] 的所有置换中不连接这 t 个和剩下 nt 个点的所有置换,所以有上式。

  1. {nm}=k(nk){k+1m+1}(1)nk

  2. [nm]=k[n+1k+1](km)(1)mk

这是前两个式子的二项式反演

  1. {m+n+1m}=k=0mk{n+kk}

原式=k=0m{n+k+1k}{n+kk1}={m+n+1m}

  1. [m+n+1m]=k=0m(n+k)[n+kk]

同 5 理

斯特林反演#

形式#

f(n)=k=0n{nk}g(k)g(n)=k=0n(1)nk[nk]f(k)

证明

我们有反转公式

k{nk}[km](1)nk=[m=n]k[nk]{km}km(1)nk=[m=n]

直接带入易证

也有以下形式,与二项式反演类似:

f(m)=k=mn{km}g(k)g(m)=k=mn(1)km[km]f(k)

作者:God_Max_Me

出处:https://www.cnblogs.com/lizihan00787/p/18685858

版权:本作品采用「God_Max_Me-非商业性使用」许可协议进行许可。

posted @   God_Max_Me  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示