[Bzoj5177][Jsoi2013]贪心的导游(主席树)
5177: [Jsoi2013]贪心的导游
Time Limit: 40 Sec Memory Limit: 512 MB
Submit: 32 Solved: 15
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
第一个旅游团, 2 个人, 0 号商店到 1 号商店的区间。若去 1 号商店,共 2 件商品,每人买 1 件,剩 0 件
。若去 2 号商店,共 4 件商品,每人买 2 件,剩 0 件。所以,小 Z 最多获赠 0 件。
第二个旅游团, 3 个人,小 Z 选择带他们去 4 号商店,共 8 件商品,每人买 2 件商品(因为每人 3 件不够)
,剩下 2 件,小 Z 最多获赠就是 2 件。 可以验证去其它商店小 Z 最多获赠的商品不会达到 2 件。
HINT
分析:
建出主席树后暴力查找[i * p,(i + 1) * p)里面最大值就好,
最坏一次查询i会枚举500次
最坏复杂度O(500n*logn)
总时限40s随便跑把,数据也水
AC代码:
- # include <iostream>
- # include <cstdio>
- using namespace std;
- const int N = 1e6 + ;
- int rt[N],lc[N * ],rc[N * ],s[N * ],dt,n,m,a[N],mx;
- void build(int &k,int l,int r)
- {
- k = ++dt;
- if(l == r)return;
- int mid = l + r >> ;
- build(lc[k],l,mid);
- build(rc[k],mid + ,r);
- }
- void updata(int &k,int pre,int L,int l,int r)
- {
- k = ++dt;s[k] = s[pre] + ;
- if(l == r)return;
- lc[k] = lc[pre];rc[k] = rc[pre];
- int mid = l + r >> ;
- if(L <= mid)updata(lc[k],lc[pre],L,l,mid);
- else updata(rc[k],rc[pre],L,mid + ,r);
- }
- int Query(int k,int pre,int L,int R,int l,int r)
- {
- if(s[k] - s[pre] == )return ;
- if(l == r)return l;
- int mid = l + r >> ;
- if(L > mid)return Query(rc[k],rc[pre],L,R,mid + ,r);
- if(R <= mid)return Query(lc[k],lc[pre],L,R,l,mid);
- int ret = Query(rc[k],rc[pre],L,R,mid + ,r);
- if(!ret)ret = Query(lc[k],lc[pre],L,R,l,mid);
- return ret;
- }
- int main()
- {
- scanf("%d %d",&n,&m);int x,y,p,ret;
- for(int i = ;i <= n;i++)scanf("%d",&a[i]),mx = max(a[i],mx);
- build(rt[],,mx);
- for(int i = ;i <= n;i++)updata(rt[i],rt[i - ],a[i],,mx);
- while(m--)
- {
- scanf("%d %d %d",&x,&y,&p);y++;ret = ;
- for(int i = ;i <= mx;i += p)
- ret = max(ret,Query(rt[y],rt[x],i,min(i + p - ,mx),,mx) % p);
- printf("%d\n",ret);
- }
- }
[Bzoj5177][Jsoi2013]贪心的导游(主席树)的更多相关文章
- BZOJ5177 : [Jsoi2013]贪心的导游
首先预处理出对于每个模数,所有被模数按结果从大到小排序的结果,那么对于一个询问,如果可以在$O(1)$时间内判断某个数字是否出现,则可以$O(1000)$回答. 考虑对序列进行分治,对于区间$[l,r ...
- 【bzoj5177】[Jsoi2013]贪心的导游(分块)
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5177 在网上看到的题解基本都是用主席树,也就是带点骚操作的暴力直接艹过去的.这里分享一 ...
- 【BZOJ5495】[十二省联考2019]异或粽子(主席树,贪心)
[BZOJ5495][十二省联考2019]异或粽子(主席树,贪心) 题面 BZOJ 洛谷 题解 这不是送分题吗... 转异或前缀和,构建可持久化\(Trie\). 然后拿一个堆维护每次的最大值,每次如 ...
- [BZOJ4571][SCOI2016]美味(贪心+主席树)
经典问题,按位贪心,每次需要知道的是”在这一位之前的位都以确定的情况下,能否找到这一位是0/1的数”,这就是在询问[L,R]内某个值域区间是否有数,主席树即可. #include<cstdio& ...
- BZOJ4571: [Scoi2016]美味【主席树】【贪心】
Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为 bi,而他的偏好值为 xi .因此,第 ...
- Governing sand(主席树/贪心)(2019牛客暑期多校训练营(第七场))
示例:输入:25 1 11 10 125 1 23 2 3输出:12 题意:n种树,第i种树有P[i]颗,砍掉每颗树的代价是C[i], 高度是H[i].需要用最小的花费砍掉一些树,让最高的树超过一半. ...
- P3293 [SCOI2016]美味 主席树+按位贪心
给定长度为 \(n\) 序列 \(a[i]\) ,每次询问区间 \([l,r]\) ,并给定 \(b,x\) 中的一个数 \(p=a[i]\) ,使得最大化 \(b \bigoplus p^x\) 主 ...
- [SCOI2016]美味——主席树+按位贪心
原题戳这里 题解 让异或值最大显然要按位贪心,然后我们还发现加上一个\(x_i\)的效果就是所有\(a_i\)整体向右偏移了,我们对于\({a_i}\)开个主席树,支持查询一个区间中有多少个在\([L ...
- 「JSOI2013」贪心的导游
「JSOI2013」贪心的导游 传送门 多次询问区间内%一个数的最大值 我们不妨设这个数为M_sea 值域比较小所以考虑分块维护. 我们观察到对于给定的一个 \(p\) ,函数 \(y = x \% ...
随机推荐
- xcopy递归拷贝
递归拷贝 ::xcopy SOURCE_DIR DES_DIR\ /s SOURCE_DIR后面不需要加反斜杠
- 洛谷 P1030 求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- uva10735 Euler Circuit
题外话:很多混合图问题可以转化为有向图问题(将无向边拆为两条有向边) 本题不行,因为只能经过一次 这种问题能想到网络流.. 复习欧拉回路:入度==出度 和uva1380有点相似,要先给无向边定向.原图 ...
- ssh 带密码私钥 输入密码
$ssh-agent bash $ssh-add -k ~/.ssh/id_rsa Enter passphrase for /home/ubuntu/.ssh/id_rsa: Identity ad ...
- js模块化入门与commonjs解析与应用
JS模块化的基本原理 commonjs规范 commonjs在前端模块化中的基本使用 AMD与CMD规范剖析博客链接 一.JS模块化基本原理 在JS没有提出来模块化的时候,开发JS项目比较简单,同时也 ...
- devops issue
1.Nginx(refercence:https://zhuanlan.zhihu.com/p/24382606) summary: DJANGO_PROJECT = /home/django/dja ...
- jqury 延迟方法
$("button").click(function(){ $("#div1").delay("slow").fadeIn(); ...
- 【2018 CCPC网络赛】1009 - 树
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6446 题目给出的数据为一棵树,dfs扫描每条边,假设去掉某条边,则左边 x 个点,右边 n-x 个点, ...
- [LOJ] 分块九题 4
https://loj.ac/problem/6280 区间修改,区间求和. 本来线段树的活. //Stay foolish,stay hungry,stay young,stay simple #i ...
- 8. Truncate undo表空间
8. Truncate undo表空间 要Truncate Undo 表空间,必须为MySQL实例配置至少两个undo表空间(两个undo表空间可确保一个undo表空间保持活动状态,另一个处于脱机状态 ...