Teek is Loading...
主题
考虑暴力,设 fi 表示考虑 a[0,i] 最长的美丽子序列:
一个前缀 max 的 DP 形式,考虑优化,瓶颈在于条件不能转换为只含 i/j 的比较。
⊕ 启示 01 Trie,设 ai,k 表示 ai 的第 k 位,那么 aj⊕i<ai⊕j 等价于:
条件一可转换为 ai,k⊕ik=aj,k⊕jk。条件二说明 ai,k⊕ik≠aj,k⊕jk∧aj,x⊕ix=0∧ai,x⊕jx=1,以上求 max 每次在字典树上跑一遍 ai⊕i,每走一个节点查询一下另一个分支即可。具体实现上,插入的时候每个节点分别存 ix=0/1 的 fi 最大值,查询时用 ai,x 判断一下即可满足 ai,x⊕jx=1。时空复杂度 O(30n)。