3.18模拟赛总结

博主分享了参与算法竞赛的经历,详细解析了数论问题、强连通分量计数及主席树在大数据结构中的应用。在数论问题中,博主遇到困难并尝试了多种方法;在数据结构部分,通过暴力和优化策略解决了问题;在树形结构的题目中,运用主席树解决动态查询。过程中,博主不断调试和优化,展示了算法竞赛中的思考过程。
摘要由CSDN通过智能技术生成

文章真的有那么多人看么…看着阅读量有点莫名不胜惶恐,毕竟也没有人互动之类的XD

今天的题还是比较高知识门槛的吧

据说不能回家了qwq 有点不乐呢qwq

时间安排

7.30-8.30

先看了三道题 直观感觉

1数论 2.不知道,3.主席树大数据结构

感觉有点舒服,看到大数据结构莫名感觉一阵舒适,T3推了推感觉不急着写,准备先推推T1

8.30-9.10

写了写T1,还以为是正解后来发现不对(造数据两档部分分拍了一下),人麻了就跑路了

9.10-10.10

到了让人开心的数据结构环节! 先写了暴力,然后糊了两棵主席树,然后造了个数据验了验,发现大样例过不去有点慌,才想起来应该是爆栈问题,奈何我忘了调大栈的指令)

10.10-11.30

盯了一下T2,然后先写60后推优化,最后造了个数据两档拍了一下

题目分析

T1

很显然是贡献组合数次

最开始 愚蠢的我以为只要质因数分解然后随便写写就对了

但是复杂度过不去(而且质因数分解还写锅了qwq虽然最后查出来了吧)

打了两档暴力

T2

每一种连接方案的答案就是竞赛图的强连通分量数

所以dp出 f f f, g g g 分别表示 n n n 个点竞赛图的数目, n n n 个点的竞赛图且是一个强连通图的数

然后dp p p p 表示确定了 i i i个点形成的图的方案数

p [ i + j ] = ∑ p [ i ] ∗ g [ j ] ∗ C ( n − i , j ) p[i+j]=\sum p[i]*g[j]*C(n-i,j) p[i+j]=p[i]g[j]C(ni,j)

先考虑二维 p [ i , j ] p [i,j] p[i,j] 选了 i i i 个点形成 j j j 个联通块的方案数

最后累加 a n s ans ans ,然后除个 2 ( n − 1 ) n / 2 2^{(n-1)n/2} 2(n1)n/2 就可以了

怎么优化呢?

考虑分别维护 p p p , r e s res res

p p p 的维护过程不变

r e s [ i + j ] = r e s [ i ] ∗ g [ j ] ∗ C ( n − i , j ) + p [ i ] ∗ g [ j ] ∗ C ( n − i , j ) res[i+j]=res[i]*g[j]*C(n-i,j)+p[i]*g[j]*C(n-i,j) res[i+j]=res[i]g[j]C(ni,j)+p[i]g[j]C(ni,j)

答案就是 r e s [ n ] res[n] res[n]

T3

暴力st表查lca,硬跳+桶维护就可以啦!

链的情况,当然是可爱的主席树!

考虑维护一下每个点上一次出现的位置

再搞个主席树维护一下某个数出现的次数

就做完辣!

离谱没判a==b

upstate

T1

就算脑到了crt也不知道怎么合并,估计题解的crt就是扩展Lucas吧(挠头)

想到了质因数分解,差距在于对于每个组合数递推去求,以及对于质因数分解+欧拉定理求逆元的混合使用

T2

我觉得我口胡的比题解直观(跑)

T3

树上莫队 属于是输的心服口服qwq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值