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. 【AndroidFramework】ATV9遥控器红外模式下,机顶盒在假待机阶段会响应遥控器语音键

    [问题描述] 测试部反馈,红外模式下,按power键进入假待机,按红外语音键会唤醒. 背景交代:红外语言键是我们自定义的按键,键值225.在红外模式下按会弹提示框"没连蓝牙,请连蓝牙使用语音 ...

  2. 排序算法七:基数排序(Radix sort)

    上一篇提到了计数排序,它在输入序列元素的取值范围较小时,表现不俗.但是,现实生活中不总是满足这个条件,比如最大整形数据可以达到231-1,这样就存在2个问题: 1)因为m的值很大,不再满足m=O(n) ...

  3. 为什么说 Babel 将推动 JavaScript 的发展【转】

    Babel是一个转换编译器,它能将 ES6 转换成可以在浏览器中运行的代码.Babel 由来自澳大利亚的开发者Sebastian McKenzie创建.他的目标是使 Babel 可以处理 ES6 的所 ...

  4. git篇之二----团体项目中使用git

    上篇说了git的简单入门,本篇来说一下在团体项目中我们该如何简单使用git 一般来说,当我们进入公司之后,就前端项目而言,若是有多个同事共同开发一个系统,我们可能会每个人去负责各自的模块. 若是人员较 ...

  5. 【报错】springboot thymeleaf超链接跳转 404

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  6. Oracle数据库SQL语句的分类

    1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言,1987年在国际标准组织的支持下成为国际标准.不过各种通行的数据库系统其实在实践过程中都对SQL规范的作了 ...

  7. 使用git版本管理时的免密问题

    方式1 使用ssh 方式 方式2 使用命令  git config --global  credential.helper store 会把密码存放到当前用户的home目录下的 该文件中 [root@ ...

  8. jsp:include 通过变量作为路径动态引入

    语法:<jsp:include page="<%=整体是个变量%>" flush="true"/> 示例: <%@ page la ...

  9. 5105 pa3 Distributed File System based on Quorum Protocol

    1 Design document 1.1 System overview We implemented a distributed file system using a quorum based ...

  10. redis 安装和运行

    安装redis 在CentOs虚拟机上:yum install redis,可能会出现以下错误: 解决方式:先输入yum install epel-release,之后输入:redis-server启 ...