首页 > 其他分享 >CF1456E XOR-ranges

CF1456E XOR-ranges

时间:2023-07-12 21:00:27浏览次数:44  
标签:选择 geq XOR len ranges 确定 CF1456E DP

题面传送门

好题。

首先比较自然的,相当于按照数位 DP 的方法,将 \([l,r]\) 剖成 \(k\) 段,其中每一段都是最高若干位确定,底下若干位任取的形式。这样在 \([l,r]\) 里面选择相当于在这 \(O(k)\) 个区间里面选择。

然后假设我们依次选择好了,考虑如何计算答案。答案显然是位独立的,对于某个数的某一个确定的位,找到其左边第一个这位也是确定的数,计算其贡献即可。

假设记 \(len_i\) 表示第 \(i\) 个数被确定的位数,那么 \([i,j]\) 的从高到低第 \(c\) 位能计算共享当且仅当 \(len_i\geq c,len_j\geq c,\min\limits_{i<k<j} len_k<c\)。

式子中出现了 \(\min\),可以考虑在笛卡尔树上 DP。设 \(f_{c,l,r,x,y}\) 表示比 \(c\) 低的位的贡献已经确定,当前 \(l-1\) 选择的数为 \(x\),\(r+1\) 选择的数为 \(y\),且 \([l,r]\) 区间内的 \(len\) 均 \(\geq c\) 的最小贡献。转移只需要枚举中间的某一个也为 \(c\) 的即可。

根据上面剖区间的过程不难发现,当 \(c,x,y\) 确定的时候, \(l,r\) 分别都只有四种取值,因此复杂度是 \(O(n^3k)\) 带大常数的。

submission

标签:选择,geq,XOR,len,ranges,确定,CF1456E,DP
From: https://www.cnblogs.com/275307894a/p/17548823.html

相关文章

  • AtCoder Beginner Contest 308 G Minimum Xor Pair Query
    洛谷传送门AtCoder传送门考虑没有删除操作怎么做。可以动态维护\(ans\),新加进来一个\(x\),我们计算\(\min\limits_{y\inS}x\oplusy\)。对\(S\)建01Trie,然后从高位往低位按位贪心,在01Trie上优先往与\(x\)这一位相同的方向走,但是前提是它的子树内有数,对于01Trie......
  • C++使用ranges库解析INI文件
    C++使用ranges库解析INI文件引言C++20引入了<ranges>头文件,C++23对其进行了完善,本文将使用该头文件提供的adaptor编写一个简单的ini解析器。ini文件格式介绍一般的ini文件由section和entry部分,比如[section]key=value;Thisisentry.section和entry均独占一行,其中sectio......
  • UVA12716 GCD等于XOR GCD XOR
    UVA12716GCD等于XORGCDXOR一道数学题。 首先,我们可以知道,a-b>=gcd(a,b)=c;其次,a-b<=axorb=c;综上,可得a-b=c,即a-b=axorb.由于范围不大,直接枚举。第一层枚举c(因为c较少),第二层枚举a,(b=a-c) 再判断c是否等于a^b即可。#include<bits/stdc++.h>usingnamespacestd;......
  • AtCoder Beginner Contest 249 G Xor Cards
    洛谷传送门AtCoder传送门好题。套路地,考虑枚举最优解的\(a\)异或和二进制下与\(k\)的\(\text{LCP}\),设在第\(i\)位不同。这样的好处是\(i\)之后的位可以随便选。之后按位贪心确定最优解\(b\)的异或和。考虑之前的答案是\(res\),当前在确定第\(j\)位,如何判断\(r......
  • AtCoder Beginner Contest 223 H Xor Query
    洛谷传送门AtCoder传送门考虑一个无脑做法:线段树维护区间线性基。时间复杂度是\(O(m\logn\log^2V)\),过于优秀以至于无法接受。事实上我们并不需要维护区间线性基,因为不带修。考虑“可持久化线性基”,开\(n\)个线性基,第\(i\)个维护前缀\([1,i]\)的数。并且插入线性......
  • The XOR Largest Pair
    #include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>usingnamespacestd;intbit[32];intn,num[5211314];structTrie{ inttrie[5211314][2],tot=1; inlinevoidInsert(inta){ ......
  • Xor-MST
    Xor-MST这道题其实是一种最小生成树算法名曰Boruvka的算法,但是平时还是Kruskal算法用的说,相信大家也是由它想起的。根据套路,由于要求的是异或边权之和的最小值,果断构建01trie。我们将样例画出来我们可以对这颗树进行dfs,可以看出两个点的LCA越深,那么它们合并代价就越......
  • [ABC201E] Xor Distances 题解
    XorDistances题目大意给定一颗带边权无根树,定义\(\text{dis}(i,j)\)表示\(i,j\)两点在树上的最短路径的边权的异或和。求:\[\sum_{i=1}^n\sum_{j=i+1}^n\text{dis}(i,j)\]思路分析首先,容易证明:\[\text{dis}(i,j)=\text{dis}(i,x)\oplus\text{dis}(x,j)\]这个式子告诉我......
  • 实现免杀:Shellcode的AES和XOR加密策略(vt查杀率:4/70)
    前言什么是私钥和公钥私钥和公钥是密码学中用于实现加密、解密和数字签名等功能的关键组件。私钥是一种加密算法中的秘密密钥,只有密钥的拥有者可以访问和使用它。私钥通常用于数字签名和数据加密等场景中,它可以用于对数据进行加密,同时也可以用于解密已经被加密的数据。公钥是......
  • 解决xorm逆向工程问题
    解决xorm逆向工程问题问题xorm:无法将“xorm”项识别为cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。今天在用xorm做逆向工程的时候碰到了一个普遍问题,xorm:无法将“xorm”项识别为cmdlet、函数、脚本文件或可......