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 ...
随机推荐
- 文件属性和ls -lhi
第1章 无法上网及拍错过程 远程连接拍错过程 1. 查看路是否通畅 2. 是否有拦击 iptables(防火墙) selinux 3. 查看是否有条件 ...
- javeEE第一周
1.我对javaEE这一门课的要求和想要达到的一个效果: 我对javaEE还是比较感兴趣的,大家也知道我是一个懂安全的PHPER,也有一些项目经验,我发现PHP做的web开发试用的场合主要是一些中小型 ...
- 团队项目需求心得——慢阻肺疾病管理APP
一.项目介绍: 先上图: 这是我们小组开发项目的系统构成图. 本项目研发面向家庭/社区,对稳定期中慢阻肺患者病情和环境全方位监测.简单病情趋势分析和患者行为干预,并且提供患者与家庭医生和专家沟通渠道的 ...
- springboot 热部署
1 pom文件添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- jenkins问题整理
--------------------------------这是一个模板------------------------------------- 问题1:jenkins服务器上传jar包到指定服 ...
- 关于redis实现分布式锁
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...
- win 10 安装 maven安装包
学习jenkins 的时候,需要用到maven,第一次搞maven,记录下 一.准备工作,下载 jdk7.0以上版本 win10操作系统 maven安装包 下载地址 如下图 二.解压安装包 我的安 ...
- 前端开发【第四篇: Dom操作】
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...
- JavaScript 之默认行为 DOM2级,事件委托机制
1. 事件默认行为及阻止方式 1.1 浏览器的默认行为 JavaScript事件本身所具有的属性,例如a标签的跳转,Submit按钮的提交,右键菜单,文本框的输入等. 1.2 ...
- Spring源码学习(8)——SpringMVC
spring框架提供了构建Web应用程序的全功能MVC模块.通过实现servlet接口的DispatcherServlet来封装其核心功能实现,通过将请求分派给处理程序,同时带有可配置的处理程序映射. ...