3.17模拟赛总结

乐子人打哈欠,不过果然睡觉+甜食可以有效制止困意嘛…一早上都没打瞌睡,而且,奶枣真好吃啊(感叹),一天基本吃一包,我太离谱了,已经放得很远了,明天必须给它丢回寝室…真就当代鸦片

对于个别人,知道要和高一考试于是去高一群里阴阳怪气,被高一同学反驳了就开始喷人的,我在这里先扣一个L

一个好笑的事…好像我所有题的思路捋顺都是在洗手间…怎么和某银川队一样在厕所过题啊(滑稽)

时间安排

7.30-9.00

分析T1,大致有感觉了(但其实还有点慌)就开始写代码,写完之后测样例,样例2RE了又加了个细节,然后造了个数据跑了一下,能正常出ans,然后就跑了(时间感觉有点紧),想着回来搞个部分分程序拍一下

9.00-10.10

推了推T2,先写了个好写的线性筛,很明显第二档是杜教筛,第三档是min25,一直没推出来是什么卷什么,然后跑路了

10.10-12.00

再思索了一下T3,有点想法,直接开冲,冲完之后调了调,然后造数据测时间,发现过不了第4档,有点不甘心,但还是把 n n n 改成了第三档的大小,基本就到11.50了,交题躺平

题目分析

T1

冷静分析,首先,叶子结点的权值一定是 v v v

又因为从上到下的限制,所以本质就是对于每个根,往下在每个子树内顺着走,直到到一个和他状态相同的点

所以这个要怎么维护呢?首先先排一种状态

f [ i , o p , j ] f[i,op,j] f[i,op,j] 表示在i号点的子树内,颜色为op,选出价值为j是否可行

为啥不行呢,因为这样转移根本没法写吧(我在说什么废话)

具体来说,我们没法维护当前点选了什么颜色,也没法给上面反馈,与当前点颜色相反的子树点的贡献会变成什么样

但是我们感觉这个状态貌似还挺好的,而且感觉,只维护YES/NO 貌似有点浪费

所以我们把状态改成 i i i 号点的及其子树内 i i i号点选中状态op,且它这一色点的权值为 j j j时,另一色点的值

然后转移就是两种,子节点同色或者异色

f [ i , o p , j + k ] = f [ i , o p , j ] + f [ w , o p , k ] f[i,op,j+k]=f[i,op,j]+f[w,op,k] f[i,op,j+k]=f[i,op,j]+f[w,op,k]

f [ i , o p , j + f [ w , o p   x o r   1 , k ] ] = f [ i , o p , j ] + k f[i,op,j+f[w,op~xor~1,k]]=f[i,op,j]+k f[i,op,j+f[w,op xor 1,k]]=f[i,op,j]+k

然后注意,每个节点dp完之后,值都必须被填充至 v v v

并且,贪心的考虑,此时另一个值一定越小越优(可以填充,但是不能砍掉)

然后就做完了

T2

积性函数,所以记录一下构成 x x x 的最小的质数 p p p 在其中的 p k p^k pk 是多少

然后筛就行了)

思考了一下这玩意的性质,本质上其实是 ∏ ( 1 + p k ) \prod(1+p^k) (1+pk)

感觉组合意义是从构成其的质数里任选k个得到的值求和

估计是根据这个意义去筛吧?

T3

sam之后,考虑能成为答案的位置只有叶节点,又因为一个节点会保留多个后缀,所以考虑线段树分治+线段树上区间取min

对于一个长度在 l e n f a + 1 , l e n len_{fa}+1,len lenfa+1,len 之内的节点来说,这一段内的位置进行线段树分治(因为值随位置减少),所以只需要插入这个点在序列中的位置,在查询到的时候减去查询点的下标就好

在线段树分治的时候,用可删除堆维护一下最优解

至于在 l e n f a , 1 len_fa,1 lenfa,1之内的节点,直接一个区间对 l e n f a + 1 len_fa+1 lenfa+1取min(以为长度更短的已经出现不止一次了)

写了3k…恼

update

T1

我还是觉得我的想法简单一些)

T2

什么辣鸡卡常题(骂骂咧咧),考场上有想到可能不是筛

不过u1s1 这卡常太离谱了吧啊喂!

T3

想法挺妙的,主要是要考虑到是一个前缀,而我恰好妹有考虑到,而且对于维护差分,我想的是线段树分治,但其实可以通过维护线段树上每个点,右边离的最近的端点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值