2024.7.29 test

A

给出 n,m,你要求对于所有长度为 n 的非负整数序列 A,B 中,满足 Ai=Bi=m
(|AiBi|)2 的总和。n500,m105

首先我们发现 (AiBi)=0,所以 |AiBi|=2Ai<BiBiAi
我们把序列分为两部分,一部分是 AiBi 的,另一部分是 Ai<Bi 的。
枚举第一部分有多少个数,并枚举 j=Ai<BiBiAi 的值,插板并组合起来即可。
要是最后和不等于 m 怎么办?对于 AiBi 的,我们令 Bi=0Ai<Bi 的令 Ai=0
那么我们把多出来 mj 的部分分配给 n 个位置即可。

B

n 个点的有向图,时刻 ti 在某个点出现一个人,共 m 个人,每个人在每个时刻随机游走。
问对于 1T 每个时刻第 n 个节点的期望人数。n70,m104,T2×106

我们发现每个时刻的答案都需要求出。但是从 tt+1 是要 O(n2) 的转移的。不如写成矩阵形式。
考虑把若干个一起转移,那么我们分块,块长为 B,那么预处理出 M1MB 转移矩阵。
kB 转移到 (k+1)B 是向量乘矩阵是 O(n2) 的。
注意到我们是单点查值,而单点查询是 O(n) 的。所以复杂度是 O(n3B+n2TB)O(n5/2×T1/2).
那么 m 个人怎么办,我们从这 m 个点开始再做一遍 M1MB 的转移。

C

在平面上,初始位于 (0,0),沿着给定长度为 n 的轨迹(支持上下左右走)走到 (a,b),并重复走 k 次。
问最后经过多少个不同的点,n105,k1012

我们考虑哪些点会重复,设第一次经过的点有 (x,y),那么 (x+ka,y+kb) 的点也会被走到。
我们要求有多少种等价的点,等价的点是满足 (x1,y1)=(x0+ka,y1+kb) 的。
如何求这个,不如把所有点按 (xmoda,ymodb) 归类即可。

D

给定序列 B,维护序列 A,支持区间赋值,区间查询 minlcm(Ai,Bi)gcd(Ai,Bi)n,q,Ai,Bi105

我们要求的就是 minabgcd2(a,b).
考虑分块,现在要考虑的是把一个块内的 Ai 都改成 v,维护答案。
那么我们枚举 gcd,一个桶内维护 Mnd 表示有 d 因子的最小值即可。

posted @   s1monG  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示