CodeForces题面

Time limit 3000 ms

Memory limit 262144 kB

Source Codeforces Round #532 (Div. 2)

Tags data structures divide and conquer greedy math *2600

Editorial

中文题意

英文题面还是没读太懂……其他博客是这么说的——一个长度为\(n\)的序列,\(m\)个询问,每次询问一个区间内数字的异或最大值。

解题思路

我用的下面第一个思路,还没仔细想证明啊……为什么可以直接把线性基里靠前的那些替换掉而不改变线性基的性质呢……

又有了4道题可以补了

  • [x] CodeForces 1100F Ivan and Burgers 单纯询问区间异或最大值
  • [ ] HDU 6579 Operation 多了个末尾插入数据的操作,还有强制在线
  • [ ] BZOJ 4184 shallot 这题还多了插入和删除的操作。居然是权限题……本地测一下算了。
  • [ ] UVALive 8514 XOR 2017ICPC西安的一道题,操作都差不多

源代码

#include<cstdio>
#include<cstring>
#include<algorithm> const int MAXN=1e6+5;
const int wide=31; int T;
int n,m; int p[MAXN][wide+2],pos[MAXN][wide+2]; void insert(int loc,int val)//location和value
{
for(int i=wide;~i;i--)
{
p[loc][i]=p[loc-1][i];
pos[loc][i]=pos[loc-1][i];
}
int temp=loc;
for(int i=wide;~i;i--)
{
if((val>>i)&1)
{
if(!p[loc][i])
{
p[loc][i]=val;
pos[loc][i]=temp;
return;
}
if(pos[loc][i]<temp)//????????????????????????这里目前还没有想通
{
std::swap(pos[loc][i],temp);//????????????????????????
std::swap(p[loc][i],val);
}
val^=p[loc][i];
}
}
} int main()
{
scanf("%d",&n);
for(int i=1,v;i<=n;i++)
{
scanf("%d",&v);
insert(i,v);
}
scanf("%d",&m);
int lastans=0;
while(m--)
{
int l,r;
scanf("%d%d",&l,&r);
int ans=0;
for(int i=wide;~i;i--)
{
if((ans^p[r][i])>ans&&pos[r][i]>=l)
ans^=p[r][i];
}
printf("%d\n",ans);
}
return 0;
}

CodeForces 1100F Ivan and Burgers的更多相关文章

  1. codeforces 1100F Ivan and Burgers 线性基 离线

    题目传送门 题意: 给出 n 个数,q次区间查询,每次查询,让你选择任意个下标为 [ l , r ] 区间内的任意数,使这些数异或起来最大,输出最大值. 思路:离线加线性基. 线性基学习博客1 线性基 ...

  2. Codeforces Round #532 (Div. 2):F. Ivan and Burgers(贪心+异或基)

    F. Ivan and Burgers 题目链接:https://codeforces.com/contest/1100/problem/F 题意: 给出n个数,然后有多个询问,每次回答询问所给出的区 ...

  3. Codeforces 1100 F - Ivan and Burgers

    F - Ivan and Burgers 思路:线性基+贪心,保存线性基中每一位的最后一个 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #p ...

  4. CF1100F Ivan and Burgers

    题目地址:CF1100F Ivan and Burgers 一道有难度的线性基题,看了题解才会做 预处理两个数组: \(p_{r,i}\) 表示满足下列条件的最大的 \(l\) :线性基第 \(i\) ...

  5. CodeForces - 1100F:Ivan and Burgers (线性基&贪心)(离线 在线)

    题意:给定N个数,Q次询问,求区间最大异或和. 思路:一开始想的线性基+线段树.单次线性基合并的复杂度为20*20,结合线段树,复杂度为O(NlogN*20*20):显然,超时. 超时代码: #inc ...

  6. Ivan and Burgers CodeForces - 1100F (线性基)

    大意: 给定n元素序列, m个询问$(l,r)$, 求$[l,r]$中选出任意数异或后的最大值 线性基沙茶题, 直接线段树暴力维护两个log还是能过的 #include <iostream> ...

  7. CodeForces 404C Ivan and Powers of Two

    Ivan and Powers of Two Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & % ...

  8. F. Ivan and Burgers(线性基,离线)

    题目链接:http://codeforces.com/contest/1100/problem/F 题目大意:首先输入n,代表当前有n个数,然后再输入m,代表m次询问,每一次询问是询问区间[l,r], ...

  9. Codeforces1100F Ivan and Burgers 【整体二分】【线性基】

    题目分析: 一道近似的题目曾经出现在SCOI中,那题可以利用RMQ或者线段树做,这题如果用那种做法时间复杂度会是$log$三次方的. 采用一种类似于整体二分的方法可以解决这道题. 将序列的线段树模型建 ...

随机推荐

  1. 查看主机CPU信息

    一.关于CPU的几个概念 CPU的作用 计算机中的中央处理单元(CPU)执行基本的计算工作 -- 运行程序.但是,一个单核的CPU同一时间只能一次执行一个任务,为了提高计算机的处理能力,也就出现了多C ...

  2. 数组转字符串,字符串转数组 join(), split();

    join()  join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. arrayObject.join(separator), 默认为使用逗号分隔 var ar ...

  3. Qt - 基于TCP的网络编程

    TCP(传输控制协议 Transmission Control Protocol) 可靠.面向数据流.面向连接  的传输协议.(许多应用层协议都是以它为基础:HTTP.FTP) 使用情况: 相比UDP ...

  4. CDH5.X文档

    属性参数 https://www.cloudera.com/documentation/enterprise/properties.html

  5. CentOS7之root密码破解

    1.重新启动Linux系统,在出现引导界面时上下移动光标选择第一引导项,按下键盘的“e”键进入内核编辑界面,如图所示: 2.找到linux16参数这一行,按住“Ctrl+e”组合键跳转到行尾,添加rd ...

  6. python 3.x报错:No module named 'cookielib'或No module named 'urllib2'

    1.    ModuleNotFoundError: No module named 'cookielib' Python3中,import  cookielib改成 import  http.coo ...

  7. ajax异步 —— javascript

    目录 ajax是什么 原生ajax jquery ajax ajax跨域 ajax是什么 作用:不必重新加载整个页面,更新部分页面内容. 大概使用过程:通过后台提供的数据接口,ajax获取数据,动态修 ...

  8. Redis【4】Java Jedis 操作 Redis~

    package redis.redis; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; /** * 描 ...

  9. 去除多余的Merge branch提交

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xuexingyang/article/d ...

  10. 如何在Linux下安装Tomcat

    上篇文章写到了Linux下安装JDK1.8,这篇文章详细阐述一下 如何在Linux下安装Tomcat!!!有啥问题可以留言,博主每天都会看博客的. 准备步骤和方法和以前一样,博主用的工具是XShell ...