11.25 模拟赛

复盘

T1 好像很可做。推式子启动。1h 过了大样例。

T2。怎么又是组合数,比普通的范德蒙德卷积多一个上限?这可做吗?好像不会,部分分启动。

45 分暴力。两个简单的性质能做到 55 分。但 nm20 真的没有思路。事实上这个东西非常好做(观察组合数什么是否为 0)但是没想到。

T3。O(n2) 好像非常简单。直接开写!

……?复杂度好像算错了,是三次方的。重新想。

发现还是很简单。很快写完了。

赛后发现这个做法是能通过 t 全部相同的。但是没写。

预计 100+55+30+0,然后 T3 没开 long long 炸了 20

总结

好的:

  • T1 做对了。但好像比正解复杂,但是积累了一个方案数转期望再转方案数的 trick。

不足:

  • long long
  • 最后时间太紧张,T3 是可以拿 45 分的(如果开了 long long)
  • T2 没做出来。感觉头脑清醒的话做出来问题不大。

知识点

T1:基环树,数学

T2:数学

T3:树形 DP,换根 DP

题解

A. 强连通分量

赛时写的打草用的,发现可以直接当总结的题解。

考虑一颗基环树的答案。

环上有 a 个点,环外有 b 个点。

枚举总共删 x 个点。

如果全删环外,scc 数量为 b+1x

如果删 i 个环内,scc 数量为 b+bx

所以要求的是:

x((b+1x)(bx)+i=1a(ai)(bxi)(a+bx))

怎么快速求:

i=1a(ai)(bxi)

范德蒙德卷积!

组合意义是,总共选 x 个物品,从 a 中选 i 个,从 b 中选 xi 个,i1,方案数。

可以看作从 a+b 中选 x 的方案数,减去从 b 中选 x 的方案数。

(a+bx)(bx)

怎么合并两颗子树的答案?

转成期望。然后直接线性性相加。

(a2A+b2B)×2A+B

B. 《原神》

快进到求:

i=0nf(i)(xi)(mxni)

其中 f(i)=2highbit(i+1)

注意到对于 i[2j11,2j2],都有 f(i)=2j,因此可以分成 log 个段,分别计算。

为了方便记 lj=2j11,rj=2j2

j=1302j×i=ljrj(xi)(mxni)

考虑如何快速计算 g(x,k)=i=0k(xi)(mxni)。那么上式的后半部分就是 g(x,rj)g(x,lj1)

考虑其组合意义:

  • m 个物品,要选 n 个,且前 x 个中选择的物品 k 个。

一个事实是当 kxg(k,x)=(mn)

考虑 g(k,x)g(k,x+1) 的增量,或者说 DP 转移。

注意到只有一种方案是不合法且被转移过去的,即 x+1 个物品选,且前 x 个物品中选了 k。这种情况的方案数是 (xk)(mx1nk1)。所以:

g(k,x+1)=g(k,x)(xk)(mx1nk1)

C. 叶子

首先每个叶子最终走到的有效计分点,一定是 st 路径的一段前缀。不妨二分这个点 mid。然后需要 check:

  • 所有能到达 mid 的叶子节点中,st 是否是长度最短的。

不妨将 t 设为根。那么能到达 mid 的叶子节点,等价于 mid 的子树内的叶子节点。

于是对于每次询问给定的 t 都做一遍这样的树形 DP。复杂度 n|{t1q}|。有 45 分。

考虑优化。我们把 st 的路径画出来:

image-20241125165341702

当以 t 为根时,v1 的子树仍是原始的子树,而 v2 的子树全部取了反。于是换根 DP。

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