抱灵抱灵抱灵抱灵抱灵

0.闲扯

打开题面发现是 DS+字符串+不知道是什么鬼的东西,于是开始睡觉
一考完试就发现又被傻逼 T1 杀了,我干脆退役吧/px
T3 暴力都写挂了什么鬼啊/px

1.题解

A

给出一个序列,有颜色和权值,支持单点修改和查询从一个点开始向后取,最多跳过 \(k\) 次且颜色两两不同的最大权值和。
容易发现一个贪心策略就是一直从前往后找直到相同的超过限制,然后每种颜色留一个最大的。
维护颜色不重复的常用套路是记录前驱,那么我们相同的不超过限制就是找前 \(k\) 大的前驱。
修改时只会修改 \(O(1)\) 个前驱,直接改。查询是在线段树上二分。

B

给出一个串 \(R\)\(n\) 个长度为 \(m\) 的字符串,定义 \(f(R)\) 为不断添加一个字符到 \(R\) 后面直到 \(R\) 包含某个小串时的 \(E(|R|)\)。对于每个 \(R\) 的前缀 \(R[1,k]\) 计算 \(f(R[1,k])\)
题解给了 AC 自动机(昨天刚被我毒奶没用)的做法,但这题不是硬币游戏加强版吗,直接推式子就完了。

C

计算 \(3n+1\) 猜想中到达 \(1\) 的步数,\(n\le2^{300000}\)
压位。根据数字的后几位得出接下来的值

2.杂题选讲

Evil Subsequence

给出两个序列 \(\{a_n\},\{b_m\}\)\(m\le5\)),两个匹配的序列是指它们长度相同且对于任意两个位置,如果它们在第一个序列中相同,那么在第二个序列中一定相同。求有多少个 \(a\) 的子序列与 \(b\) 匹配。
先处理掉平凡的所有数字不相同的情况。
按照出现次数大于一次的数字个数讨论,如果有两个,那么枚举这两个数字,将它们的位置拿出来 dp,此时 \(b\) 中最多剩下一个多余的数字,直接算;如果只有一个数字出现大于一次,那么枚举它进行 \(O(n)\) 的 dp,去重同上。

Heavy Stones

求石子合并问题中每个初始位置的最小代价。
考虑石子合并的过程,其实是构造一个排列 \(p\),固定 \(p_k=n\)\(p_1<\dots<p_k,p_k>\dots>p_n\),代价为 \(\sum\limits_{i=1}^na_ip_i\)
把它看成维护前缀后缀两条链,对于一条链我们加入一个元素后看是否能与最后一段合并使得平均值变大。
然后按照平均值排序贪心。

???

给出 \(n\) 个随机数 \(a_i\) 和打乱后的 \((a_i+k)\bmod m\),求 \(k,m\)
随 机 化 算 法 是 没 有 前 途 的

Mystery Square

给定一个完全平方二进制数,至多有 \(40\) 位不知道,求它。
发现知道了前一半或者后一半都可以确定这个数,所以直接枚举就做完了。

posted @ 2021-06-04 23:19  ajthreac  阅读(140)  评论(0编辑  收藏  举报