2022.1.21 模拟赛

挂分挂分。

T1 一个关于字符串的问题 (words)

随便怎么做都可以,反正暴力都能过。

T2 第二个关于字符串的问题 (strings)

按位搜索的套路,从左到右枚举每一位,枚举并强制这一位选 \(c\) 计算方案数,然后 AC 自动机上 DP。

因为方案数会很大,和 \(10^{18}\)\(\min\) 即可。

T3 金币与银币 (coins)

\(x=0\) 的情况,只用金币,因为两次的金币加起来进位一定不优,所以就是枚举长度做 01 背包。

\(x> 0\):发现 \(x\) 只能用来填补较低位,假设 \(x\) 最高位为 \(h\)\(k=h+2\)\(\ge k\) 的位一定只能由金币填。

而第 \(l+1\) 位可能是由银币加金币产生的进位。

低于位 \(k\) 的部分 \(r\) 分类讨论:

  • \(r\in [0,x]\),只需要用银币填;
  • \(r\in (x,x+2^i],x+2^i<2^k\),需要用 \(i\) 个金币和若干银币;
  • \(r\in (x,x+2^i+2^j],2^l\le x+2^i< 2^k,x+2^i+2^j< 2^k\),需要 \(i+j\) 个金币。

模拟,复杂度 \(\mathcal O(y^2+Q\log x)\)


总结:

T1 写的广义 SAM + 树剖,我 dfs(v) 前令 dep[u] -= dep[top[u]] 了然后 dep[] 就乱套了。

T2 数组开小了,还忘了统计 AC 自动机上的 fail 链和。

出错出的不少,多总结多注意把。

posted @ 2022-01-21 17:00  RenaMoe  阅读(74)  评论(0编辑  收藏  举报