CodeForces 1100F Ivan and Burgers
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\)个询问,每次询问一个区间内数字的异或最大值。
解题思路
我用的下面第一个思路,还没仔细想证明啊……为什么可以直接把线性基里靠前的那些替换掉而不改变线性基的性质呢……
- https://www.cnblogs.com/zsben991126/p/11271100.html 最普遍的在线维护线性基的思路
- https://www.luogu.org/problemnew/solution/CF1100F 八仙过海
- 上面那个最常见在线思路的
- 线段树离线维护的
- 序列看成树进行点分治的
- 整体二分的
- lxl ST表的(分块那么万能的吗)
- ………………
又有了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的更多相关文章
- codeforces 1100F Ivan and Burgers 线性基 离线
题目传送门 题意: 给出 n 个数,q次区间查询,每次查询,让你选择任意个下标为 [ l , r ] 区间内的任意数,使这些数异或起来最大,输出最大值. 思路:离线加线性基. 线性基学习博客1 线性基 ...
- Codeforces Round #532 (Div. 2):F. Ivan and Burgers(贪心+异或基)
F. Ivan and Burgers 题目链接:https://codeforces.com/contest/1100/problem/F 题意: 给出n个数,然后有多个询问,每次回答询问所给出的区 ...
- Codeforces 1100 F - Ivan and Burgers
F - Ivan and Burgers 思路:线性基+贪心,保存线性基中每一位的最后一个 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #p ...
- CF1100F Ivan and Burgers
题目地址:CF1100F Ivan and Burgers 一道有难度的线性基题,看了题解才会做 预处理两个数组: \(p_{r,i}\) 表示满足下列条件的最大的 \(l\) :线性基第 \(i\) ...
- CodeForces - 1100F:Ivan and Burgers (线性基&贪心)(离线 在线)
题意:给定N个数,Q次询问,求区间最大异或和. 思路:一开始想的线性基+线段树.单次线性基合并的复杂度为20*20,结合线段树,复杂度为O(NlogN*20*20):显然,超时. 超时代码: #inc ...
- Ivan and Burgers CodeForces - 1100F (线性基)
大意: 给定n元素序列, m个询问$(l,r)$, 求$[l,r]$中选出任意数异或后的最大值 线性基沙茶题, 直接线段树暴力维护两个log还是能过的 #include <iostream> ...
- CodeForces 404C Ivan and Powers of Two
Ivan and Powers of Two Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & % ...
- F. Ivan and Burgers(线性基,离线)
题目链接:http://codeforces.com/contest/1100/problem/F 题目大意:首先输入n,代表当前有n个数,然后再输入m,代表m次询问,每一次询问是询问区间[l,r], ...
- Codeforces1100F Ivan and Burgers 【整体二分】【线性基】
题目分析: 一道近似的题目曾经出现在SCOI中,那题可以利用RMQ或者线段树做,这题如果用那种做法时间复杂度会是$log$三次方的. 采用一种类似于整体二分的方法可以解决这道题. 将序列的线段树模型建 ...
随机推荐
- HDU 2973 YAPTCHA (威尔逊定理)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- [Python3] 032 常用模块 random
目录 random 1. random.random() 2. random.choice() 3. random.shuffle() 4. random.randint() 5. random.ra ...
- java tomcate 启动后cmd 出现乱码
今天windows 启动tomcat 后,出现cmd 乱码 尝试改cmd编码为UTF-8后无效,修改tomcat 注册表CodePage ,cmd 依然乱码, 后来把Conf 目录下的logging. ...
- Cookie、Session和LocalStorage
前记 前面我已经写了一篇关于Cookie的文章,但是那时候我其实理解的并不是很深刻,会有些搞不懂的地方,今天我就再写一次,博客也是我的学习笔记 Cookie Cookie是服务器发送到用户浏览器并保存 ...
- vue与angular 区别
1.vue的双向数据绑定是基于 Es5中的getter和setter来实现的,而angular而是由自己实现的一套模板编译规则,需要进行 ‘脏’ 检查,vue则不需要,因此,vue性能上更高一些,但是 ...
- atxserver2-rethinkdb的一些基础操作
因为我只需要一些基础操作就好,所以在web端的 Data Explorer 操作,首先启动 rethinkdb.exe,然后登陆网页端, 下面是一些基础操作的语句, 一.创建表r.db(‘atxse ...
- phpstudy使用PHP+nginx配置Laravel
一.需要注意把vhosts.conf文件内root项目路径的\换成/例如 root "D:/laravelApp/test/public"; 二.若文件根目录下没有 .env1.. ...
- Qualcomm_Mobile_OpenCL.pdf 翻译-6-工作组尺寸的性能优化
对于许多kernels来说,工作组大小的调整会是一种简单有效的方法.这章将会介绍基于工作组大小的基础知识,比如如何获取工作组大小,为什么工作组大小非常重要,同时也会讨论关于最优工作组大小的选择和调整的 ...
- xrdp远程
安装图形界面 yum groupinstall "GNOME Desktop" 安装epel源 yum install epel* 安装xrdp yum --enablerepo= ...
- java面试07——设计模式
1.什么是设计模式 设计模式就是经过前人无数次的实践总结出的,设计过程可以反复使用的,可以解决特定问题的设计方法. 2.常用的设计模式有哪些 2.1单例模式(饱汉模式.饿汉模式.双重锁模式) http ...