题目链接:传送门

思路:

  按查询的右端点离线。

  然后从左到右维护线性基。

  每个基底更新为最右边的方案,可以让尽量多的查询享受到这个基底。

  用ci维护后更新右端点为i的答案。

代码(析构1000ms,别学我):

#include <bits/stdc++.h>
#define P pair<int, int>
#define F first
#define S second using namespace std;
const int MAX_N = 5e5 + ;
const int MAX_B = + ; int n, q;
int c[MAX_N];
int bas[MAX_B], pos[MAX_B];
int ans[MAX_N];
vector <P> eve[MAX_N]; inline bool base(int x, int pos) {
return (x >> pos) & ;
} int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> n;
for (int i = ; i <= n; i++)
cin >> c[i];
cin >> q;
for (int i = , l, r; i <= q; i++) {
cin >> l >> r;
eve[r].push_back(P(l, i));
} for (int i = ; i <= n; i++) {
int x = c[i], p = i;
for (int b = ; b >= ; b--) {
if (base(x, b)) {
if (!bas[b]) {
bas[b] = x;
pos[b] = p;
break;
}
if (pos[b] < p) swap(bas[b], x), swap(pos[b], p);
x ^= bas[b];
}
}
for (auto &p : eve[i])
for (int b = ; b >= ; b--)
if (p.F <= pos[b])
ans[p.S] = max(ans[p.S], ans[p.S]^bas[b]);
}
for (int i = ; i <= q; i++)
cout << ans[i] << '\n';
return ;
}

Codeforces1100F. Ivan and Burgers(离线+线性基)的更多相关文章

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

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

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

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

  3. 【CF1100F】Ivan and Burgers(线性基,分治)

    题意:给定n个数,每个数为c[i],有q个询问,每次询问从第l个到第r个数字的最大xor和 n,q<=5e5,c[i]<=1e6,时限3s 思路:直接线段树维护区间线性基是3个log,会T ...

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

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

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

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

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

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

  7. Codeforces Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理

    https://codeforces.com/contest/1100/problem/F 题意 一个有n个数组c[],q次询问,每次询问一个区间的子集最大异或和 题解 单问区间子集最大异或和,线性基 ...

  8. CF1100F Ivan and Burgers

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

  9. CodeForces 1100F Ivan and Burgers

    CodeForces题面 Time limit 3000 ms Memory limit 262144 kB Source Codeforces Round #532 (Div. 2) Tags da ...

随机推荐

  1. Qt 比对TreeItem节点

    void TreeModel::settingsUpdate(const QStringList &lines){ QList<TreeItem*> parents; TreeIt ...

  2. Word中使用宏处理表格内容 小记

    不解释,直接上代码... Sub 删除表格列WT0818() '此符号是注释 ' 删除表格列WT0818 宏 ' For Each tb In ActiveDocument.Tables  //wor ...

  3. go-ethereum源码分析 PartIII 共识流程

    A: js指令转化为新transaction 在web3上操作流程 1. import to web3 2. connect to peers 3. read local key store 4. d ...

  4. bzoj4700

    题解: cdq分治 先考虑没有人被秒掉的情况 代码: #include<bits/stdc++.h> #define y1 ____y1 ; using namespace std; ty ...

  5. 五、docker网络技术

    五 docker网络技术 1.本章环境: 源码文件目录: 2.网络基础回顾 通道: NAT将私有地址和端口号翻译成公有的地址和端口号项某网站发出数据包.某网站根据数据表查出私有ip和端口号返回数据. ...

  6. Java的数组,集合,数据结构,算法(一)

    本人的愚见,博客是自己积累对外的输出,在学习初期或自己没有多少底料的情况下,与其总结写博客不如默默去搞自己的代码,但是学到集合这一块时,数组,集合,数据结构,算法这个概念搞的我比较混淆,所以不得已写这 ...

  7. boostrap 日期插件(带中文显示)

    不知道大家用什么样的日期插件,我最近用了bootstrap插件,整理了下,分享给大家,第四部分是我找的插件源码,可以省去大家的找的时间,按1-3的步骤用就好了,有些样式上的小问题就自己调一调: (1) ...

  8. HTML中data-* 属性

    使用 data-* 属性来嵌入自定义数据: <ul><li data-animal-type="bird">Owl</li><li dat ...

  9. 为什么毕业一年了工资还是只有7K

    “天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能.”. 从实习的时候开始说起吧,实习的时候是在上海的一家做winform的公司,这家公司总是会 ...

  10. PCA降维—降维后样本维度大小

    之前对PCA的原理挺熟悉,但一直没有真正使用过.最近在做降维,实际用到了PCA方法对样本特征进行降维,但在实践过程中遇到了降维后样本维数大小限制问题. MATLAB自带PCA函数:[coeff, sc ...