省选模拟赛2022/3/24

省选模拟赛2022/3/24

与正解的差距

T1

首先,暴力没打好我的锅(哭了)
30分枚举每一个点做中间点,然后对于每个x f[i][j]表示度数为i,gcd为j时的答案,这个转移可做
45分发现d[x]<k的点是不能作为中间点的,把这个跳过,然后就能优化特别大的复杂度!
发现式子是先找一个中间点,然后枚举k条长度为(1~maxx)的链,要使这些长度gcd=1,然后把这些链出现的次数乘起来,求累加和,也就是对于每个x,求
∑ a 1 = 1 m a x x ∑ a 2 = 1 m a x x . . . . . . ∑ a k = 1 m a x x c n t [ a 1 ] × c n t [ a 2 ] × . . . . . . c n t [ a k ]    ( g c d ( a 1 , a 2...... a k ) = 1 ) \sum_{a1=1}^{maxx}\sum_{a2=1}^{maxx}......\sum_{ak=1}^{maxx}cnt[a1]\times cnt[a2]\times ......cnt[ak] \;(gcd(a1,a2......ak)=1) a1=1maxxa2=1maxx......ak=1maxxcnt[a1]×cnt[a2]×......cnt[ak](gcd(a1,a2......ak)=1)
发现有gcd,是可以进行莫比乌斯反演的,所以就变成了
∑ d = 1 l i m μ ( d ) ∑ a 1 ∣ d ∑ a 2 ∣ d . . . . . . ∑ a k ∣ d c n t [ a 1 ] × c n t [ a 2 ] × . . . . . . c n t [ a k ] \sum _{d=1}^{lim}\mu(d)\sum_{a1|d}\sum_{a2|d}......\sum_{ak|d} cnt[a1]\times cnt[a2]\times ......cnt[ak] d=1limμ(d)a1da2d......akdcnt[a1]×cnt[a2]×......cnt[ak]
这个莫比乌斯反演的应用可以学习,在求cnt的时候,用的树形dp,分成两部分,一部分是自己子树内的,一部分是子树外的,这个套路挺常见的,应该能想到

T2

打表的时候把一个数字写错了,自闭,导致没分了
刚开始还在想怎么搞dfs,后来直接放弃打表了,但是赛后经提点,原来很简单,确定一个数为底数,所有数都往他上放,统计所有情况,但是需要把原序列变换一下位置再做,跑得飞快,有50分,哭了

正解其实用到了一个折半的思想,把前三个数的所有可能情况搞出来,后三个数的搞出来,然后从那个里面找答案,感觉确实是折半好题,就是代码量太大,操作的实现比较不容易,不过也对折半更熟悉了一些

T3

暴力只需要维护每一列最下面的块的位置和最上面的块的位置,考试的时候有一瞬间觉得自己维护的不对,但是真的来不及改了,现在想想确实,和中间的没关系,确定个框架就行了

如果能写出暴力,应该就能打表发现对应位置是一个等差数列,然后就有35分了(然而暴力都不会我不配)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值