Right Side Character
记n=|s|,观察到以下两个性质:
-
若sn=A,则f(s)n−1=A,进而答案为A
-
若sn=B且∃i∈[2,n],si−1si=BA,则∃i∈[2,n),f(s)i−1f(s)i=BA
由于最终必然不存在,中间即存在某步使得f(s)n−1=A
综上,答案为B的必要条件sn=B且∀i∈[2,n],si−1si≠BA,且显然充分
简单判定即可,时间复杂度为O(n)
Split and Insert
考虑将过程逆序,即对于给定的{Pn},每次将k个数放到末尾,最终使得Pi=i
注意到两数的位置关系取决于最后一次恰选择其中一项的操作(若不存在即与初始相同)
记QPi=i,Si为表示i操作情况的K位二进制数,则即要求∀i∈[1,n),(Si,Qi)<(Si+1,Qi+1)
定义fl,r,i表示区间[l,r]仅用i次操作的答案,则
{fl,r,0=[Ql<Ql+1<...<Qr]fl,r,i=min{fl,r,i−1,minj∈[l,r)fl,j,i−1+fj+1,r,i−1+(r−j)cK−i+1}
暴力实现即可,时间复杂度为O(n3K)
Mex of Subset Sum
不妨假设a1≤a2≤...≤an,并记Ai=∑ij=1aj
维护[0,Ai]中不能被表示的数集合T,转移即T′={x∣(x−ai∈T∨x<ai)∧(x∈T∨x>Ai−1)}
将左半部分的条件拆开,即T′={x∣x−ai∈T∧...}∪{x∣x<ai∧...}
(其中...表示右半部分的条件)
后者若大小≥k即可直接得到答案,否则即|T′|<|T|+k,进而|T|≤nk
用set暴力实现即可,时间复杂度为O(n2klognk)
Walk Around Neighborhood
参考这里
Overlap Binary Tree
参考这里
Preserve Distinct
咕咕咕
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-07-02 [cf700D]Huffman Coding on Segment