Skip to content

CF1720D2 Xor-Subsequence (hard version) 笔记

考虑暴力,设 fi 表示考虑 a[0,i] 最长的美丽子序列:

fi=maxj<iaji<aijfj+1

一个前缀 max 的 DP 形式,考虑优化,瓶颈在于条件不能转换为只含 i/j 的比较。

启示 01 Trie,设 ai,k 表示 ai 的第 k 位,那么 aji<aij 等价于:

  • k(x,30],aj,kik=ai,kjk
  • aj,xix<ai,xjx

条件一可转换为 ai,kik=aj,kjk。条件二说明 ai,kikaj,kjkaj,xix=0ai,xjx=1,以上求 max 每次在字典树上跑一遍 aii,每走一个节点查询一下另一个分支即可。具体实现上,插入的时候每个节点分别存 ix=0/1fi 最大值,查询时用 ai,x 判断一下即可满足 ai,xjx=1。时空复杂度 O(30n)

最近更新