不知道第多少次 三

时效性

A

考虑 Kruskal,容易发现加入一条 |uv|=d 的边后,原图被 ngcd(n,d) 个这条边的副本连成 gcd(n,d) 个连通块,

每个块内点的编号形成一个模 gcd(n,d) 等价类,于是把每个同余等价类当成一个点,即 ngcd(n,d) 即可。

B

定义 pi=j=1i[aj>ai],则趟数为 maxpi

注意到合法的 pa 形成双射,于是只需求合法的 p 的最大值的期望。

ck=p[maxpi=k]=p[maxpik]p[maxpi<k]=(k+1)!(k+1)nk1k!knk,答案就是 k×ckn!

C

以下每个 # 代表一个点。

k=1

统计每个点被多少矩形包含。

k=2

统计每个二元组被多少矩形包含。

.#
#.

在每个点 i 处统计它与前面的点形成的二元组的贡献,即 (ni+1)(nai+1)j<i,aj<aijaj,二维数点。

#.
.#

同理。

k=3

..#
.#.
#..

在每个点 j 处统计它与前后的点形成的三元组的贡献,即 i<j,ai<ajj<k,aj<akiai(nk+1)(nak+1)=i<j,ai<ajiaij<k,aj<ak(nk+1)(nak+1)=(i<j,ai<ajiai)(j<k,aj<ak(nk+1)(nak+1)),两次二维数点。

#..
.#.
..#

同理。

..# 
#..
.#.

定义此类三元组中前两个点组成的“前两元组”((i,ai),(j,aj)) 的贡献为 iaj

扫描横坐标,维护 ci 表示已经扫过的,以纵坐标为 i 的点为第一元的前两元组贡献和,

扫到 iij|j<i,aj>ai 形成前两元组,需要把所有 caj 加上 jai

扫到 ii 与以 j|j<i,aj<ai 为第一元的前两元组形成三元组,答案需要加上 (ni+1)(nai+1)caj

线段树维护区间 ci,考虑对所有 caj|aj[l,r] 加上 jai 后,区间和加上 jai=aij,所以还要维护区间 j

.#. #.. .#.
#.. ..# ..#
..# .#. #..

同理。

D

posted @   Jijidawang  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示