洛谷10月月赛II T4象棋与马——莫反出手,杜教筛相助

本文探讨了一种特定的棋盘路径计数问题,通过数学分析给出了解决方案。利用数论中的欧拉函数和莫比乌斯反演,将问题转化为求解数对的条件概率。最终提出了一种有效算法,结合杜教筛技术实现快速计算。

Description

有一只马刚开始在(0,0)(0,0)(0,0),它每次可以走一个a×ba×ba×b的矩形。如果可以到达无穷大棋盘上的任何一个点,则p(a,b)=1p(a,b)=1p(a,b)=1;否则p(a,b)=0p(a,b)=0p(a,b)=0

给定nnn,求∑i=1n∑j=1np(i,j)\sum_{i=1}^n \sum_{j=1}^n p(i,j)i=1nj=1np(i,j)

由于答案可能过大,请将其对2642^{64}264取模。

Solution

不难发现,p(i,j)=1p(i,j)=1p(i,j)=1的充分必要条件是gcd(i,j)=1gcd(i,j)=1gcd(i,j)=1且当iiijjj在模222意义下同余。

等价于我们要计算∑i=1n∑j=1n[i mod 2≠j mod 2][gcd(i,j)=1]\sum_{i=1}^n \sum_{j=1}^n [i\ mod\ 2≠j\ mod\ 2][gcd(i,j)=1]i=1nj=1n[i mod 2=j mod 2][gcd(i,j)=1]

开始愉快地反演~

∑i=1n∑j=1n[i mod 2≠j mod 2]∑d∣gcd(i,j)μ(d)\sum_{i=1}^n \sum_{j=1}^n [i\ mod\ 2≠j\ mod\ 2] \sum_{d|gcd(i,j)} \mu(d)i=1nj=1n[i mod 2=j mod 2]dgcd(i,j)μ(d)

=∑d=1n[d∈odd]μ(d)∑i=1n∑j=1n[i mod 2≠j mod 2][d∣gcd(i,j)]=\sum_{d=1}^n [d∈odd] \mu(d) \sum_{i=1}^n \sum_{j=1}^n [i\ mod\ 2≠j\ mod\ 2][d|gcd(i,j)]=d=1n[dodd]μ(d)i=1nj=1n[i mod 2=j mod 2][dgcd(i,j)]

=∑d=1n[d∈odd] μ(d) f(n,d)=\sum_{d=1}^n [d∈odd]\ \mu(d)\ f(n,d)=d=1n[dodd] μ(d) f(n,d)

这里的f(n,d)=⌊n2d⌋×(⌊nd⌋−⌊n2d⌋)f(n,d)=\lfloor \frac n {2d} \rfloor×(\lfloor \frac n d \rfloor-\lfloor \frac n {2d} \rfloor)f(n,d)=2dn×(dn2dn)⌊n2d⌋\lfloor \frac n {2d} \rfloor2dn表示在ddd的倍数中偶数的个数,(⌊nd⌋−⌊n2d⌋)(\lfloor \frac n d \rfloor-\lfloor \frac n {2d} \rfloor)(dn2dn)显然就是ddd的倍数中奇数的个数。

可以发现,fff可以通过整除分块来快速计算,但是我们似乎不能快速求出∑i=lr[i∈odd] mu(i)\sum_{i=l}^r [i∈odd]\ mu(i)i=lr[iodd] mu(i)。这一部分可以拆成两个前缀和相减的形式,现在关键在于如何快速求得∑i=1r[i∈odd] μ(i)\sum_{i=1}^r [i∈odd]\ \mu(i)i=1r[iodd] μ(i)

∑i=1r[i∈odd] μ(i)\sum_{i=1}^r [i∈odd]\ \mu(i)i=1r[iodd] μ(i)

=∑i=1rμ(i)−∑i=1⌊r2⌋μ(2i)=\sum_{i=1}^r \mu(i)-\sum_{i=1}^{\lfloor \frac r 2 \rfloor} \mu(2i)=i=1rμ(i)i=12rμ(2i)

可以发现,当iii为偶数时,μ(2i)=0\mu(2i)=0μ(2i)=0没有贡献;否则,μ(2i)=−μ(i)\mu(2i)=-\mu(i)μ(2i)=μ(i)。带入得:

=∑i=1rμ(i)+∑i=1⌊r2⌋μ(i)[i∈odd]=\sum_{i=1}^r \mu(i)+\sum_{i=1}^{\lfloor \frac r 2 \rfloor} \mu(i) [i∈odd]=i=1rμ(i)+i=12rμ(i)[iodd]

根据∑d∣rμ(d)=[r=1]\sum_{d|r} \mu(d)=[r=1]drμ(d)=[r=1]∑i=1r\sum_{i=1}^ri=1r可以通过杜教筛快速计算;后者相当于一个规模减半的问题,可以直接递归下去,边界为r=1r=1r=1


本题的解法讲解到此为止。

这样的复杂度为什么是正确的呢?由于杜教筛的复杂度为O(n23)O(n^{\frac 2 3})O(n32)(要先预处理出前23\frac 2 332个答案),所以总时间复杂度为

O(n23+(12n)23+(14n)23+……)O(n^{\frac 2 3}+(\frac 1 2 n)^{\frac 2 3}+(\frac 1 4 n)^{\frac 2 3}+……)O(n32+(21n)32+(41n)32+)

所以总时间复杂度就是O(n23)O(n^{\frac 2 3})O(n32)的,虽然带着比较大的常数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值