【省选模拟】20/04/29

t e s t   0429 test~ 0429 test 0429

A

  • 考场比较菜,写的 O ( 2 10 n ) O(2^{10}n) O(210n),大概是贪心每一位,然后查有没有包涵当前数的,如果有就加上,这样查询是 O ( 16 ∗ 2 6 ) O(16*2^6) O(1626),修改是 O ( 2 10 ) O(2^{10}) O(210),正解的话考虑 f i , j f_{i,j} fi,j 表示前 8 8 8 位为 i i i,后 8 8 8 位查询 j j j 时的最大值即可,复杂度 O ( 2 8 n ) O(2^{8}n) O(28n)

B

  • 直接 k m p kmp kmp 自动机,用主席树维护字符集,加儿子的时候要把点 c o p y copy copy 一下不然自动机的转移有锅

C

  • 考虑用矩阵表示转移,当 k ≠ 4 k\neq 4 k=4 时,加法和乘法都是一个置换
    那么直接交换行列即可(乘 0 是区间 c o v e r cover cover
    k = 4 k=4 k=4 时,乘 2 2 2 的时候会变成 022020 022020 022020,对这个按奇偶性特殊维护,如果加 1 或加 3 的话,区间的 022020 022020 022020 会取反,那么再维护一个取反的即可,复杂度 O ( n log ⁡ n ( k + 1 ) 3 ) O(n\log n(k+1)^3) O(nlogn(k+1)3)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值