2022.9.30 闲话

Preface

不要管这个叫 Preface 的 H1 .

TOC

呃……

(鼠标)

我的 B 站 20 粉丝了!

\Apjifengc/

……

我在其他网站的粉丝远远是达不到这么多的……

……

……(话题是)我的黑历史!

(背的不对见谅,有部分省略)


原文 .

一个普及难度的题,Solution 可以写得多冗长?

Luogu P3909 异或之积

给一个序列 {an},求

6(i=1nj=i+1nk=j+1naiajak)mod(109+7)

3n106 .

异或搁哪呐?

首先推一波柿子

6i=1nj=i+1nk=j+1naiajak=6i=1n(aij=i+1nk=j+1najak)=6i=1n(aij=i+1najk=j+1nak)

Sl,r=i=lrai
则原式就等于

6i=1n(aij=i+1najSj+1,n)

先处理出

R=j=2najSj+1,n

然后 Θ(n) 暴力算第一个 ,第二个 每次求完后将 RRai+1Si+2,n 即可 .

时空复杂度 Θ(n) .


伪代码:

C++ 代码:

using namespace std;
const int N=1e6,MOD=1e9+7;
typedef long long ll;
int n,a[N];
ll S[N],ans,R;
inline __attribute__((always_inline)) ll sum(int l,int r){return ((S[r]-S[l-1])%MOD+MOD)%MOD;}
// 这个 inline __attribute__((always_inline)) 是加速用的,可以忽略 qwq
int main()
{
	scanf("%d",&n);
	for (int i=1;i<=n;i++){scanf("%d",a+i); S[i]=(S[i-1]+a[i])%MOD;}
	for (int i=2;i<=n;i++) R=(R+a[i]*sum(i+1,n)%MOD)%MOD;
	for (int i=1;i<=n;i++){ans=(ans+a[i]*R%MOD)%MOD; R=((R-a[i+1]*sum(i+2,n))%MOD+MOD)%MOD;}
	printf("%lld\n",6*ans%MOD);
	return 0;
}

发现以前写的东西还挺好玩的 hszxoj 规则类怪谈SCP-1919810 .

闲话太水也不好,放个题吧,有人说是洛谷上那个叫约数个数和的题弱化版,额好像关系不是很大啊 /youl

好像当时出的时候是根据 3B1B 的感觉出的 .

以下是正文 desu!

正文

题目描述

x=i=1rpiαi

其中 pi 为互不相同的素数,αi 是大于 0 的整数 .

则令

f(x,t)=i=1rj=0αi(pij)t

给定 n,k,求:

i=1nf(i,k)

答案对 109+7 取模 .

  • Subtask 1 (10 pts):1n104 .
  • Subtask 2 (30 pts):1n105 .
  • Subtask 3 (20 pts):1n106μ2(n)=1.
  • Subtask 4 (40 pts): 1n106 .

对于所有数据 1T101n106k[0,2] .

题解

Subtask 1 & Subtask 2

乱搞 / 暴力

Subtask 3

gp(x)=xp,那么推一下这个 f(n,k) 是啥

i=1rj=0αigk(pij)=i=0max{αi}j=1r[αji]gk(pji)=i=0max{ai}fk(j=1r[αji]pji)=digk(d)=σk(i)

其中 σk(n)n 的所有约数的 k 次方和 .

所以问题就是要求

i=1nσk(i)

暴力求就可过这一档了 .

Subtask 4

σk 是积性函数,可以线性筛,然后就可以得到满分了 .

或者写 O(nlogn) 调和级数算法也行 .

Bonus

显然这么经典的问题是有更优做法的 .

众所周知的,有 ( 是狄利克雷卷积)

μ1=Idk

σk=1Idk

于是,

μσk=Idk

用杜教筛就可以做出 .

μ 函数和 Idk 的前缀和非常好做,前者杜教筛一下,后者用公式即可 .

时间复杂度大概就是 Θ(n3/4),不知道这里用 Θ 对不对 .

更优做法我就不会了 .

要是想跑的快快的可以分段打表 .


X 是为仅取非负整数值的随机变量,定义其 PGF 为

GX(z)=E(zX)=i=0Pr(X=i)zi

则有:

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