2023.8.11 闲话

稻的《中继输出者》杀翻一切成为周榜 rk1,挺强的 . 不过这首绝对是给歌爱雪写的吧!

大豆那个题被爆标了,具体细节暂且不讨论 .


早就想写了,类欧几里得算法:

问题:

f(a,b,c,n)=i=0nai+bcg(a,b,c,n)=i=0niai+bch(a,b,c,n)=i=0nai+bc2

洛谷模板

分别考虑:

f(a,b,c,n)

首先当 acbc 时可以将其归约至小于 c 的情况:

f(a,b,c,n)=i=0n(acc+amodc)i+(bcc+bmodc)c=acn(n+1)2+bc(n+1)+i=0n(amodc)i+(bmodc)c=acn(n+1)2+bc(n+1)+f(amodc,bmodc,c,n)

那么假设 a,b<c,则:

f(a,b,c,n)=i=0nj=1ai+bc1=j=1an+bci=0n[jai+bc]=j=1an+bci=0n[jcb1a<i]=j=1an+bc(njcb1a)=nan+bcf(c,cb1,a,an+bc1)

那么递归算就完了,因为是辗转相除的形式所以时间复杂度是 O(logn) 的 .

那剩下两个都差不多了,后面 dirty-works 不展开写了:

g(a,b,c,n)

为了方便,先让 m=an+bc,t=jcb1a,k=jc+cb1a .

那么:

g(a,b,c,n)=acn(n+1)(2n+1)6+bcn(n+1)2+g(amodc,bmodc,c,n)

g(a,b,c,n)=i=0nij=1ai+bc1=j=1mi=0ni[i>t]=j=0m1(k+1+n)(nk)2=12(m(n2+n)h(c,cb1,a,m1)f(c,cb1,a,m1))

h(a,b,c,n)

h(a,b,c,n)=ac2n(n+1)(2n+1)6+bc2(n+1)+h(amodc,bmodc,c,n)+2acg(amodc,bmodc,c,n)+2bcf(a)modc,bmodc,c,n)+acbc(n+1)

考虑用 n2=2(i=0ni)n 拆平方:

h(a,b,c,n)=i=0n2(j=0mjai+bc)=f(a,b,c,n)+2i=0nj=0ai+bc1(j+1)h(a,b,c,n)+f(a,b,c,n)=2j=0m1(j+1)i=0n[i>k]=2j=0m(j+1)(nk)=2(m(m+1)n2f(c,cb1,a,m1)g(c,cb1,a,m1))=m(m+1)n2f(c,cb1,a,m1)2g(c,cb1,a,m1)

这里 g,h 互相依赖,需要一起递推 .

那么就推完了,挺好 .

一般还是用求 f 的比较多:

ll f(ll a, ll b, ll c, ll n)
{
    if (!a) return b/c * (n+1);
    if ((a>=c) || (b>=c)) return a/c * n * (n+1) / 2 + b/c * (n+1) + f(a%c, b%c, c, n);
    return n * ((a*n+b)/c) - f(c, c-b-1, a, (a*n+b)/c-1);
}

整几个例题看看:

Earthquake

给定非负整数 a,b,c,求 ax+byc 的非负整数解个数 .

就是直线下整点个数,比较经典的类欧问题:

ans=x=0ac(caxb+1)=x=0ac((ba)x+cbx+1)=acac(ac+1)2+x=0ac(ba)x+cb

画个图可能比较直观 . 到这里已经可以求了 .

Simple Math 3

给定非负整数 a,b,c,d,求有多少个正整数 i 满足闭区间 [a+bi,a+ci] 中没有 d 的倍数 .

如果一个区间 [a+bi,c+di] 不存在解至少要长度不大于 d,那么首先有 i<d1cb .

剩下的情况每个区间至多包含一个解,那么考虑容斥,求出所有区间解的个数然后减就行了 .

关于区间解的个数,只需要求前缀和即可:

R=i=0d1cb(a+cida1+bid)

把求和号拆开就可以类欧了 .

Popcount Sum

给定非负整数 n,m,r,求小于等于 n 且模 mr 的正整数的 popcount 之和 .

可能这个题才是类欧入门题吧!

后令 k=logn,考虑 popcount 的一种表示形式:

popcount(n)=ni=1kn2i

b=nrm,那么:

ans=t=0bpopcount(mt+r)=t=0b(mt+ri=1kmt+r2i)=mb(b+1)2+(b+1)rt=0bi=1kmt+r2i=mb(b+1)2+(b+1)ri=1kt=0bmt+r2i

那么做 k 次类欧就行了,时间复杂度是 O(Tlog2n) .

这个是 joke3579 做法,感觉还挺漂亮的 .

posted @   yspm  阅读(102)  评论(5编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
😅​
点击右上角即可分享
微信分享提示