BZOJ 4571: [Scoi2016]美味
二次联通门 : BZOJ 4571: [Scoi2016]美味
/*
BZOJ 4571: [Scoi2016]美味 dalao们都在说这题如果没有加法balabala就可以用可持久化trie解决了
然而我连那个也不会啊QAQ 此题用主席树
从高位到低位贪心
能填1就填1,也就是查询一段区间有没有某个范围的数
(然而由乃dalao说可持久化线段树和可持久化trie是一个东西)
*/
#include <cstdio>
#include <iostream>
#include <cstring> const int BUF = ;
char Buf[BUF], *buf = Buf; inline void read (int &now)
{
for (now = ; !isdigit (*buf); ++ buf);
for (; isdigit (*buf); now = now * + *buf - '', ++ buf);
} const int _L = ( << ) - ;
#define Max 200010
int root[Max * ], c[Max], S;
inline int max (int a, int b) { return a > b ? a : b; }
class President_Tree
{
private : int tree[Max * ][], size[Max * ];
int T_C; public : President_Tree () { T_C = ; }
void Change (int &now, int last, int l, int r, int key)
{
now = ++ T_C;
memcpy (tree[now], tree[last], sizeof tree[now]);
size[now] = size[last] + ;
if (l == r) return ;
int Mid = l + r >> ;
if (key <= Mid)
Change (tree[now][], tree[last][], l, Mid, key);
else Change (tree[now][], tree[last][], Mid + , r, key);
} int Query (int l, int r, int b, int x, int L, int R)
{
if (l == r) return b ^ l;
int Mid = l + r >> ; -- S;
if (b & ( << S))
{
if (Q (L, R , , _L, max (, l - x), max (, Mid - x)))
return Query (l, Mid, b, x, L, R);
else return Query (Mid + , r, b, x, L, R);
}
else
{
if (Q (L, R, , _L, max (, Mid + - x), max (, r - x)))
return Query (Mid + , r, b, x, L, R);
else return Query (l, Mid, b, x, L, R);
}
} int Q (int L, int R, int x, int y, int l, int r)
{
if (x == l && y == r) return size[R] - size[L];
int Mid = x + y >> ;
if (r <= Mid)
return Q (tree[L][], tree[R][], x, Mid, l, r);
else if (l > Mid)
return Q (tree[L][], tree[R][], Mid + , y, l, r);
else
return Q (tree[L][], tree[R][], x, Mid, l, Mid) + Q (tree[L][], tree[R][], Mid + , y, Mid + , r);
}
};
President_Tree Tree; int Main ()
{
fread (buf, , BUF, stdin);
int N, M; register int i, j; read (N), read (M);
int x, b, l, r;
for (i = ; i <= N; ++ i)
read (c[i]), Tree.Change (root[i], root[i - ], , _L, c[i]); for (i = ; i <= M; ++ i)
{
read (b), read (x), read (l), read (r); S = ;
printf ("%d\n", Tree.Query (, _L, b, x, root[l - ], root[r]));
}
return ;
}
int ZlycerQan = Main ();
int main (int argc, char *argv[]) {;}
BZOJ 4571: [Scoi2016]美味的更多相关文章
- bzoj 4571: [Scoi2016]美味 (主席树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 题面; 4571: [Scoi2016]美味 Time Limit: 30 Sec ...
- bzoj 4571 [Scoi2016]美味——主席树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 按位考虑,需要的就是一个区间:比如最高位就是(2^k -x). 对于不是最高位的位置该 ...
- BZOJ.4571.[SCOI2016]美味(主席树 贪心)
题目链接 要求 \(b\ xor\ (a_j+x)\) 最大,应让 \(a_j+x\) 的最高位尽可能与b相反.带个减法Trie树好像很难做?反正我不会. 从最高位开始,如果这位b是0/1,判断是否存 ...
- bzoj4571: [Scoi2016]美味
4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MB Submit: 275 Solved: 141 [Submit][Status][ ...
- 【bzoj4571&&SCOI2016美味】
4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 656 Solved: 350[Submit][Status][ ...
- bzoj [Scoi2016]美味
[Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 721 Solved: 391[Submit][Status][Discus ...
- [洛谷P3293] [SCOI2016]美味
洛谷题目链接:[SCOI2016]美味 题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 ...
- 【BZOJ4571】[Scoi2016]美味 主席树
[BZOJ4571][Scoi2016]美味 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期望值 ...
- BZOJ 4570: [Scoi2016]妖怪
二次联通门 : BZOJ 4570: [Scoi2016]妖怪 二次联通门 : luogu P3291 [SCOI2016]妖怪 LibreOJ : LibreOJ #2015. 「SCOI2016 ...
随机推荐
- spring源码解析前瞻
很多人有疑问:为什么要读源码?读源码有什么用?我也一直问自己这些问题,读源码非常枯燥,工作中又用不到,慢慢的自己读源码越发现自己知识的不足,无法把知识串起来,形成知识体系.从单系统中常用的Spring ...
- tkinter学习笔记_02
4. 多行输入框 text # 按钮 # command 执行动作 def insert_point(): var = e.get() t.insert('insert', var) b = tk.B ...
- CF936C Lock Puzzle 构造
传送门 好久不做构造题脑子都僵化了qwq 无解的条件是\(s\)包含的字符可重集和\(t\)包含的字符可重集不相等,相等的时候下文会给出一种一定可行的构造方案. 考虑增量构造.定义某个字符串\(x\) ...
- JavaScript中数组的key-value在对象中倒装的妙用
对于数组的去重.寻找指定元素的索引,通常我们都是通过遍历来解决,但是在某些应用场景下,将数组的value-key进行倒装,也即将value当做对象的key,key当做对象value,可以极大降低算法的 ...
- python pip 切换阿里云镜像
示例: pip install xxx -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
- java之hibernate之多对多双向关联映射
1.比如在权限管理中,角色和权限之间的关系就是多对多的关系,表结构为: 2.类结构 Role.java public class Role implements Serializable{ priva ...
- C# vb .net实现高斯模糊
在.net中,如何简单快捷地实现Photoshop滤镜组中的高斯模糊效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- 1 集群状态、增删改查、全量替换、强制创建、设置单个index的分片数副本数
检查集群健康状态,可以看集群颜色.(黄色:primary shard都正常,replica不正常) GET /_cat/health?v 列出集群所有index GET /_cat/indices?v ...
- springboot笔记07——整合MyBatis
前言 Springboot 整合 MyBatis 有两种方式,分别是:"全注解版" 和 "注解.xml混合版". 创建项目 创建Springboot项目,选择依 ...
- .net 调用存储过程
语言:C# 一.调用带输入参数的存储过程 首先自然是在查询分析器里创建一个存储过程喽~~ 如下所示: create proc proc_1 @uid int, @pwd varchar(255) ...