hdu6579

题意
初始时有n个数,现在有q次操作:

查询[l,r]内选择一些数使得异或和最大;
在末尾加入一个数。
题目强制在线。

思路
对于i我们记录[1,i]每个基底最靠近i的位置和这个位置的值,然后查询时看r 这个位置记录的每个基底的位置是否大于等于l,如果大于等于那么[l,r] 内一定有一个位置可以贡献这个基底,然后比较答案大小即可。

题目对数据加密了:

x^=lastans; ///题目的要求

l=(l^lastans)%n+1; ///题目的要求
r=(r^lastans)%n+1; ///题目的要求

#include<bits/stdc++.h>
using namespace std;
const int maxn = + ;
int t, n, q, op, l, r, x;
int a[maxn], b[], pos[], base[maxn][], las[maxn][]; bool add(int val, int pp) {
for (int i = ; i >= ; i--) {
if (val & (1ll << i)) {
if (!b[i]) {
pos[i] = pp;
b[i] = val;
break;
}
if(pos[i] < pp) {
swap(b[i], val);
swap(pos[i], pp);
}
val ^= b[i];
}
}
return val > ;
}
int main() { scanf("%d", &t);
while(t--) {
scanf("%d%d", &n, &q);
for(int i = ; i >= ; --i) b[i] = , pos[i] = ;
for(int i = ; i <= n; ++i) {
scanf("%d", &a[i]);
add(a[i], i);
for(int j = ; j >= ; --j) base[i][j] = b[j], las[i][j] = pos[j];
}
int lastans = ;
while(q--) {
scanf("%d", &op);
if(op) {
++n;
scanf("%d", &x);
x ^= lastans;///题目的要求
add(x, n);
for(int i = ; i >= ; --i) base[n][i] = b[i], las[n][i] = pos[i];
} else {
scanf("%d%d", &l, &r);
l = (l ^ lastans) % n + , r = (r ^ lastans) % n + ;///题目的要求
if(l > r) swap(l, r);
lastans = ;
for(int i = ; i >= ; --i) {
if(las[r][i] >= l && (lastans ^ base[r][i]) > lastans) {
lastans ^= base[r][i];
}
}
printf("%d\n", lastans);
}
}
}
return ;
}

cf1100F - Ivan and Burgers

给定n和a[]

有q个询问:

给定l,r

求在a[]al…r​中选取任意个,使得他们的异或和最大。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn =1e6+;
int b[],pos[],a[maxn],base[maxn][],las[maxn][];
bool add(int val , int pp){
for(int i= ; i>= ; i--){
if(val & (<<i)){
if (!b[i]) {
pos[i] = pp;
b[i] = val;
break;
}
if(pos[i] < pp) {
swap(b[i], val);
swap(pos[i], pp);
}
val^=b[i];
}
}
return val>;
}
int main(){ int n,q;
scanf("%d",&n);
for(int i= ; i>= ; i--) b[i]=,pos[i]=;
for(int i= ; i<=n ; i++){
scanf("%d",&a[i]);
add(a[i],i);
for(int j= ; j>= ; j--) base[i][j]=b[j],las[i][j]=pos[j];
}
int lastans=;
scanf("%d",&q);
while(q--){
int op,x,l,r;
scanf("%d%d",&l,&r);
lastans=;
for(int i= ; i>= ; i--){
if(las[r][i]>=l && (lastans^base[r][i])>lastans){
lastans^=base[r][i];
}
}
printf("%d\n",lastans); } }

区间查询异或最大值——cf1100F,hdu6579(线性基)的更多相关文章

  1. 区间查询异或最大值——cf1100F,hdu6579

    cf1100F是静态区间查询最大值,有离线的解法,我感觉线段树或者莫队应该都能过 更优秀的解法可以在线并支持修改,可以解决hdu6579,即依次插入每个数,pos[i][j]表示在插第i个数时第j个基 ...

  2. BZOJ4671 异或图(容斥+线性基)

    题意 定义两个结点数相同的图 \(G_1\) 与图 \(G_2\) 的异或为一个新的图 \(G\) ,其中如果 \((u, v)\) 在 \(G_1\) 与 \(G_2\) 中的出现次数之和为 \(1 ...

  3. bzoj 2844 albus就是要第一个出场 异或和出现次数 线性基

    题目链接 题意 给定\(n\)个数,将其所有的子集(\(2^n\)个)的异或和按升序排列.给出一个询问\(q\),问\(q\)在该序列中第一次出现位置的下标(下标从\(1\)开始). 题解 结论 记其 ...

  4. 【题解】kth异或和/魔改版线性基

    [题解]魔改版线性基 魔改版线性基解决此类问题. 联系线性空间的性质,我们直接可以构造出这样的基: \[ 100000 \\ 010000 \\ 000010 \\ 000001 \] 使得每个基的最 ...

  5. P5169 xtq的异或和(FWT+线性基)

    传送门 我咋感觉我学啥都是白学-- 首先可以参考一下这一题,从中我们可以知道只要知道两点间任意一条路径以及整个图里所有环的线性基,就可以得知这两个点之间的所有路径的异或和 然而我好像并不会求线性基能张 ...

  6. BZOJ4671 异或图 斯特林反演+线性基

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4671 题解 半年前刚学计数的时候对这道题怀着深深的景仰,现在终于可以来做这道题了. 类似于一般 ...

  7. 2019年杭电多校第一场 1002题Operation(HDU6579+线性基)

    题目链接 传送门 题意 初始时有\(n\)个数,现在有\(q\)次操作: 查询\([l,r]\)内选择一些数使得异或和最大: 在末尾加入一个数. 题目强制在线. 思路 对于\(i\)我们记录\([1, ...

  8. sgu 275 To xor or not to xor 线性基 最大异或和

    题目链接 题意 给定\(n\)个数,取其中的一个子集,使得异或和最大,求该最大的异或和. 思路 先求得线性基. 则求原\(n\)个数的所有子集的最大异或和便可转化成求其线性基的子集的最大异或和. 因为 ...

  9. 【loj114】k大异或和 线性基+特判

    题目描述 给由 $n​$ 个数组成的一个可重集 $S​$ ,每次给定一个数 $k​$ ,求一个集合 $T⊆S​$ ,使得集合 $T​$ 在 $S​$ 的所有非空子集的不同的异或和中,其异或和 $T_1 ...

随机推荐

  1. UDP信号驱动IO

    SIGIO信号 信号驱动式I/O不适用于TCP套接字, 因为产生的信号过于频繁且不能准确判断信号产生的原因. 设置信号驱动需把sockfd的非阻塞与信号驱动属性都打开 server sockfd单独提 ...

  2. jQuery源码分析系列——来自Aaron

    jQuery源码分析系列——来自Aaron 转载地址:http://www.cnblogs.com/aaronjs/p/3279314.html 版本截止到2013.8.24 jQuery官方发布最新 ...

  3. 前端 CSS的选择器 基本选择器

    基本选择器包括: 标签选择器 类选择器 ID选择器 通用选择器 标签选择器 就是通过标签名来选择元素: 选中p标签 <!DOCTYPE html> <html lang=" ...

  4. ajax传文件用express的multer接住

    html部分: //input type设为file <input type="file" name="file" id="fileInputE ...

  5. Java 中的 T,E,K,V, 别傻傻分不清楚!

    作者:glmapper https://juejin.im/post/5d5789d26fb9a06ad0056bd9 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛 ...

  6. ajax与json总结

    1.jquery中调用ajax方法 $.ajax({ async:true, type:"post", url:"xxxServlet", data:{&quo ...

  7. 《剑指offer》面试题19 二叉树的镜像 Java版

    书中方法:这道题目可能拿到手没有思路,我们可以在纸上画出简单的二叉树来找到规律.最后我们发现,镜像的实质是对于二叉树的所有节点,交换其左右子节点.搞清楚获得镜像的方法,这道题实际上就变成了一道二叉树遍 ...

  8. HDU 2783 You’ll be Working on the Railroad(最短路)

    You’ll be Working on the Railroad Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3276 ...

  9. PS使用记录:人像(证件照)更换背景

    PS使用记录:人像(证件照)更换背景 参考:非常干净的抠羽毛ps教程抠图羽毛 (1)准备2019PS,原图 (2)选择人像:选择->主体 (3)边缘处理:选择 ->选择并遮住 ->选 ...

  10. 搜索(DFS)---能到达的太平洋和大西洋的区域

    能到达的太平洋和大西洋的区域 417. Pacific Atlantic Water Flow (Medium) Given the following 5x5 matrix: Pacific ~ ~ ...