题目链接

loj#2016. 「SCOI2016」美味

题解

对于不带x的怎么做....可持久化trie树

对于带x,和trie树一样贪心

对于答案的二进制位,从高往低位贪心,

二进制可以表示所有的数,那么每一位的选取情况,对于之后的可选区间也是一定的

贪心时,判断当前位,是否可以为1,

用线段树维护一下,每次走左儿子代表这一位选了1,走又儿子为选了0,这样区间是不交

对于b的限制,改一下查询的区间就行了

代码

#include<cstdio>
#include<algorithm> inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9')c = getchar();
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
const int maxn = 200007;
int n,m;
int a[maxn];
int rt[maxn],tot = 0 ;
int ls[maxn * 20 + 7],rs[maxn * 20 + 7],sz[maxn * 20 + 7];
void insert(int y,int &x,int l,int r,int k) {
x = ++ tot; ls[x] = ls[y],rs[x] = rs[y]; sz[x] = sz[y] + 1;
if(l == r) return ;
int mid = l + r >> 1;
if(k <= mid) insert(ls[y],ls[x],l,mid,k);
else insert(rs[y],rs[x],mid + 1, r,k);
}
int query(int x,int y,int l,int r,int L,int R) {
if(l >= L && r <= R) return (sz[y] - sz[x] > 0);
int mid = l + r >> 1;
int res = 0;
if(L <= mid) res |= query(ls[x],ls[y],l,mid,L,R);
if(mid < R ) res |= query(rs[x],rs[y],mid + 1,r,L,R);
return res;
}
int main() {
n = read(),m = read();
for(int i = 1;i <= n;++ i) {
a[i] = read();
insert(rt[i - 1],rt[i],0,(1 << 19) - 1,a[i]);
}
for(int i = 1;i <= m;++ i) {
int x,b,l = 0,r = (1 << 19) - 1, ans = 0,L,R;
x = read(),b = read(), L = read(),R = read();
for(int i = 18;i >= 0; -- i) {
int s = (x & (1 << i)) ,mid = l + r >> 1;
int tl = s ? l : mid + 1,tr = s ? mid : r ;
if(query(rt[L - 1],rt[R],0,(1 << 19) - 1,std::max(tl - b,0),std::max(tr - b,0))) ans |= (1 << i), l = s ? l : mid + 1,r = s ? mid : r; else l = s ? mid + 1 : l,r = s ? r : mid;
}
printf("%d\n",ans);
}
return 0;
}

loj#2016. 「SCOI2016」美味的更多相关文章

  1. 【LOJ】#2016. 「SCOI2016」美味

    题解 做了一下SCOI2015,于是决定搬运SCOI2016= v = 如果没有加法,我们可以向左向右节点查找 每个总权值是2^18 - 1,然后左右分,那么每次是一个完整的节点 如果有了加法,那么我 ...

  2. AC日记——「SCOI2016」美味 LiBreOJ 2016

    #2016. 「SCOI2016」美味 思路: 主席树: 代码: #include <bits/stdc++.h> using namespace std; #define maxa 26 ...

  3. 「SCOI2016」美味 解题报告

    「SCOI2016」美味 状态极差无比,一个锤子题目而已 考虑每次对\(b\)和\(d\)求\(c=d \ xor \ (a+b)\)的最大值,因为异或每一位是独立的,所以我们可以尝试按位贪心. 如果 ...

  4. loj#2013. 「SCOI2016」幸运数字 点分治/线性基

    题目链接 loj#2013. 「SCOI2016」幸运数字 题解 和树上路径有管...点分治吧 把询问挂到点上 求出重心后,求出重心到每个点路径上的数的线性基 对于重心为lca的合并寻味,否则标记下传 ...

  5. loj#2015. 「SCOI2016」妖怪 凸函数/三分

    题目链接 loj#2015. 「SCOI2016」妖怪 题解 对于每一项展开 的到\(atk+\frac{dnf}{b}a + dnf + \frac{atk}{a} b\) 令$T = \frac{ ...

  6. loj#2012. 「SCOI2016」背单词

    题目链接 loj#2012. 「SCOI2016」背单词 题解 题面描述有点不清楚. 考虑贪心 type1的花费一定不会是优的,不考虑, 所以先把后缀填进去,对于反串建trie树, 先填父亲再填儿子, ...

  7. 「SCOI2016」美味

    「SCOI2016」美味 题目描述 一家餐厅有 \(n\) 道菜,编号 \(1 \ldots n\) ,大家对第 \(i\) 道菜的评价值为 \(a_i \:( 1 \leq i \leq n )\) ...

  8. loj #2013. 「SCOI2016」幸运数字

    #2013. 「SCOI2016」幸运数字 题目描述 A 国共有 n nn 座城市,这些城市由 n−1 n - 1n−1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以 ...

  9. LOJ #2013「SCOI2016」幸运数字

    时限为什么这么大啊 明摆着放多$ log$的做法过啊$QAQ$ LOJ #2013 题意 有$ Q$次询问,每次询问树上一条链,点有点权,你需要选择一些链上的点使得异或和尽量大 点数$ \leq 2* ...

随机推荐

  1. 图文并茂的Python教程-numpy.pad

    图文并茂的Python教程-numpy.pad np.pad()常用与深度学习中的数据预处理,可以将numpy数组按指定的方法填充成指定的形状. 声明: 需要读者了解一点numpy数组的知识np.pa ...

  2. linux统计某个特定文件名的大小总和【原创】

    [hch@EAISRVBJ2 log]$find ./ -name "test_chs_00*"|xargs du -ck|grep total|awk 'BEGIN{sum=0} ...

  3. springboot系列四、配置模板引擎、配置热部署

    一.配置模板引擎 在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html ...

  4. TCP/IP指纹鉴别 fingerprint

    http://www.freebuf.com/articles/system/30037.html使用TCP/IP协议栈指纹进行远程操作系统辨识 Fyodor <fyodor@insecure. ...

  5. Html5 序列帧动画

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  6. 【转】理解*(void**)

    #include <stdio.h> int main() { int *p; ; unsigned ; p = &a; printf("%d\n", *p); ...

  7. linux下快速安装jenkins

    Linux下快速安装Jenkins 建议使用 FileZilla 工具简化以下步骤中移动.环境变量配置等步骤. 1      软件下载 l  Java:jdk-7u17-linux-x64.tar.g ...

  8. oracle move 释放 表空间

    使用sqlplus 操作 alter table TEST_TB1 move storage(initial 64K); alter table TEST_TB1 move  ; select SEG ...

  9. CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解

    前言    如果要给很多台客户端主机安装操作系统,要是每一台都拿张安装光盘一台一台主机的去装系统那就太浪费时间和精力了.在生产环境中也不实际,要实现为多台主机自动安装操作系统,那我们怎么实现自动化安装 ...

  10. 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程

    使用vue全家桶制作博客网站   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue. ...