Codeforces1100F. Ivan and Burgers(离线+线性基)
题目链接:传送门
思路:
按查询的右端点离线。
然后从左到右维护线性基。
每个基底更新为最右边的方案,可以让尽量多的查询享受到这个基底。
用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(离线+线性基)的更多相关文章
- CodeForces - 1100F:Ivan and Burgers (线性基&贪心)(离线 在线)
题意:给定N个数,Q次询问,求区间最大异或和. 思路:一开始想的线性基+线段树.单次线性基合并的复杂度为20*20,结合线段树,复杂度为O(NlogN*20*20):显然,超时. 超时代码: #inc ...
- F. Ivan and Burgers(线性基,离线)
题目链接:http://codeforces.com/contest/1100/problem/F 题目大意:首先输入n,代表当前有n个数,然后再输入m,代表m次询问,每一次询问是询问区间[l,r], ...
- 【CF1100F】Ivan and Burgers(线性基,分治)
题意:给定n个数,每个数为c[i],有q个询问,每次询问从第l个到第r个数字的最大xor和 n,q<=5e5,c[i]<=1e6,时限3s 思路:直接线段树维护区间线性基是3个log,会T ...
- Codeforces1100F Ivan and Burgers 【整体二分】【线性基】
题目分析: 一道近似的题目曾经出现在SCOI中,那题可以利用RMQ或者线段树做,这题如果用那种做法时间复杂度会是$log$三次方的. 采用一种类似于整体二分的方法可以解决这道题. 将序列的线段树模型建 ...
- 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 Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理
https://codeforces.com/contest/1100/problem/F 题意 一个有n个数组c[],q次询问,每次询问一个区间的子集最大异或和 题解 单问区间子集最大异或和,线性基 ...
- CF1100F Ivan and Burgers
题目地址:CF1100F Ivan and Burgers 一道有难度的线性基题,看了题解才会做 预处理两个数组: \(p_{r,i}\) 表示满足下列条件的最大的 \(l\) :线性基第 \(i\) ...
- CodeForces 1100F Ivan and Burgers
CodeForces题面 Time limit 3000 ms Memory limit 262144 kB Source Codeforces Round #532 (Div. 2) Tags da ...
随机推荐
- My third homework
题目要求 定义一个包含有10个整数的数组a并初始化,定义一个指针变量p,p指向数组a,定义函数fun,要求在fun内部访问数组,并打印出数组中各元素的值,要求在fun函数内不要出现数字10. 代码: ...
- BPM与OA区别
核心差异: OA解决的是流程有无问题 BPM解决的是流程更好更优的问题 主要差异如下: 1.BPM有更好的广度跟深度 这里的广度是指应用场景的广度. BPM一般都会以端到端的方式衔接企业运营过程的上下 ...
- 不同版本的IDE ,对应的选项 有变化
xx.dproj对应的项目级选项 也不同,所以,要分别保存为不同的文件. 如果不同的IDE,打开同一个 .dproj文件,会因为 选项界面的选项不同,提示一些错误.
- rabbitmq 日志存储路径
Linux 下/var /log/rabbitmq/ windows下C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
- angular-cli.json常见配置
{ "project": { "name": "ng-admin", //项目名称 "ejected": false / ...
- 电脑小白和ta的小白电脑——MySQL数据库
数据库我选择了MySQL,因为据说MySQL是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS之一了,而且,免费呀! MySQL数据库开发环境的配置 (一)下载MySQL ...
- Android : Camera之camx hal架构
一.camx的代码结构 目前主流的机型都使用camx架构,这个架构和之前架构的主要区别就是 芯片接口层的代码从hardware/qcom 迁移到 vendor/qcom/proprietary/下面, ...
- spring cloud 随笔记录(1)-
最近随着微服务的火热,我也开始对我服务进行了解了 毕竟程序员这一行需要及时更新自己的技能,才能更好的生存. 我理解的微服务 项目由多个独立运行的程序组成,每个服务运行在自己的进程中,服务间采用轻量 ...
- jar包添加到maven本地仓库
操作系统windows 本地要配置过maven环境 cmd 运行命令 mvn install:install-file -Dfile=D:\commons-net-3.6.jar.jar -Dgro ...
- HTML中data-* 属性
使用 data-* 属性来嵌入自定义数据: <ul><li data-animal-type="bird">Owl</li><li dat ...