首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
51nod 1577 异或凑数
】的更多相关文章
51nod 1577 异或凑数
思路真的是挺巧妙的. 让我惊叹,原来线性基还能这么做?!?! 好吧,这种取若干个数异或凑数的题目怎么能少的了线性基呢? 但是,问题集中在于怎么快速提取一个区间的线性基 暴力n^2 线段树维护线性基?分区间logn,合并一次logn^2 O(nlogn^3)GG 然后就一脸不可做了. 题解:“容易”想到,一个线性基里面的元素可以用线性基外的元素替换的. 只要保证还能表示出原来的线性空间,那么一定可以替换. 所以,我们给每个点维护一个线性基. lb[r]表示,由1~r的所有元素选择构成的线性基,其中…
51nod 1577 异或凑数 线性基的妙用
\(OTZgengyf\)..当场被吊打\(QwQ\) 思路:线性基 提交:\(3\)次 错因:往里面加数时\(tmp.p\)与\(i\)区分不清(还是我太菜了) 题解: 我们对每个位置的线性基如此操作: 对于每一位,保存尽量靠后的数: 所以每一位还要记录位置. (后文区分"位"(二进制位)和"位置"(原数组中的第几位),每个位置都有\(30\)位) 具体来说,就是从高位向低位扫,如果我们当前的数能被放入某一位,如果这一位没有数,则直接放入:否则比较出现位置,如果当…
[51nod1577]异或凑数
题目 点这里看题目. 分析 以下设\(k=\lfloor\log_2(\max a)\rfloor\). 关于异或凑数的问题自然可以用线性基处理,即如果可以插入到线性基,就说明无法凑出这个数. 于是我们就有了一个线段树或者倍增维护区间线性基的方法,时间是\(O(k^2nlog_2n)\). ......算了. 考虑对每一个点维护线性基\(B_i\),维护的是\([1,i]\)的 " 最优 " 线性基. " 最优 " 意味着线性基中的元素在原序…
51Nod1577 异或凑数 线性基 构造
国际惯例的题面:异或凑出一个数,显然是线性基了.显然我们能把区间[l,r]的数全都扔进一个线性基,然后试着插入w,如果能插入,则说明w不能被这些数线性表出,那么就要输出"NO"了.然而怎么得到这个线性基?我们有两种很显然的暴力:线段树和单调莫队.然而亲测它们都不能AC......(不排除我写丑了)考虑思考一下性质:如果我们能对于每个结束位置,用这个位置前面尽可能靠后的数构造出一个线性基,那么我们查询的时候是不是就能取出结束位置为r的线性基限制用的数出现位置不能早于l,然后直接查询就好了…
51Nod1577 异或凑数 线性基
原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1577.html 题意 给定一个长度为 n 的序列. 有 m 组询问,每一组询问给出 L,R,k ,询问 L,R 区间内是否能找出一些数,使它们 XOR 起来等于 k . $n,m\leq 5\times 10^5, 0\leq a_i,k< 2^{30}$ 题解 由于 $n,m$ 同阶,所以以下时间复杂度描述时,对于 $n,m$ 不加区分. 线性基合并是 $O(\log ^2 a_i)$ 的.…
51nod 1577 线性基
思路: http://blog.csdn.net/yxuanwkeith/article/details/53524757 //By SiriusRen #include <bits/stdc++.h> using namespace std; ; int n,m,a[N]; inline int read(){ ;char p=getchar(); ')p=getchar(); +p-',p=getchar(); return x; } ]; int main(){ scanf("…
51nod 1301 集合异或和——异或dp
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1301 好题!看了TJ才会. 因为是不可重集合,所以当然有前 i 个表示A和B都考虑的前 i 个,新加一个讨论放A.放B.不放. A<B在异或上看就是有一位,它前面的A和B都一样,该位A是0.B是1.该位可以枚举.然后就能dp了. 注意边界细节……和标程对拍真愉快…… #include<iostream> #include<cstdio> #in…
51Nod XOR key —— 区间最大异或值 可持久化字典树
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1295 1295 XOR key 题目来源: HackerRank 基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 收藏 关注 给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R).求A[L] 至 A[R] 这R - L + 1个数中,与X 进行异或运算(Xor),得…
【51nod】1312 最大异或和
题解 很显然我们求出一组线性基来,如果有M个基,那么可以构造N - M + 1个最大异或值 而对于线性基中的元素,除了最大的元素,我们用最大异或值异或掉每个元素累加进答案 而不是把线性基中的元素处理成一个下三角矩阵! 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <vector> #include <set&…
51nod 1295 XOR key-区间异或最大值-可持久化01Trie树(模板)
1295 XOR key 2 秒 262,144 KB 160 分 6 级题 给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R).求A[L] 至 A[R] 这R - L + 1个数中,与X 进行异或运算(Xor),得到的最大值是多少? 收起 输入 第1行:2个数N, Q中间用空格分隔,分别表示数组的长度及查询的数量(1 <= N <= 50000, 1 <= Q <= 50000). 第2 - N+1行:每行1个数,对…