首页 > 其他分享 >CF1720D2

CF1720D2

时间:2024-07-21 19:40:06浏览次数:6  
标签:01trie 然后 CF1720D2 ans oplus dp

感觉静下来能想出来?整个思路没有太容易走偏的地方,就最后一段有点难

首先看到异或想到01trie和拆位,然后看到要求最长子序列,想到dp。所以目前的想法就是01trie里存dp,然后按照某种方式找到最大的,来更新\(dp_{i}\)。
不会了!\(a_{i} \oplus j>a_{j} \oplus i\)怎么搞啊。我们拆位,发现如果这两个满足条件,那一定是这两个前k-1位相同,然后k位一个1,一个0。那么就可以得到下列条件

\[a_{i,1,k-1} \oplus j,1,k-1=a_{j,1,k-1} \oplus i,1,k-1 \]

\[a_{i,k} \oplus j,k=1 \]

\[a_{j,k} \oplus i,k=0 \]

对于第一个式子直接移项,将未知数(或者字母相同的)移到一边,后面两个式子同样处理

\[a_{j,1,k-1} \oplus j,1,k-1=a_{i,1,k-1} \oplus i,1,k-1 \]

\[j,k=1 \oplus a_{i,k} \]

\[a_{j,k} = i,k \]

考虑在01trie上如何搞这个东西,发现第一个只要\(a_{j} \oplus j\)和\(a_{i} \oplus i\)一样的路就行了,这启示我们将\(a_{i} \oplus i\)插到01trie中,然后记录\(ans_{u,0/1,0/1}\),也就是能走到这个点的\(a_{i,k}\)为0/1,且\(i,k\)为0/1的dp的最大值。然后走下去每一层都和\(ans[u][i,k][1 \oplus a_{i,k}]\)取最大值,最后+1就是\(dp_{i}\)了,插入就正常插入

标签:01trie,然后,CF1720D2,ans,oplus,dp
From: https://www.cnblogs.com/wuhupai/p/18314874

相关文章

  • CW初中-C102B(加强版)(CF1720D2-Trie树)
    前言这道题的弱化版CF1720D1出现在模拟赛上,大家都用了弱化版的思路即向前扫描256个元素暴力计算DP。如果想具体了解的就去看看弱化版的题解吧。但弱化版的思路(除DP外)在此题几乎毫无落脚之地,甚至毫无关系。我在考场上曾对$0\leqa_i\leq10^2$感到了疑惑——甚至都没......