[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 \% ...
随机推荐
- Oracle | Java日期处理
public class Test{ public static void main (String args []){ j ...
- Java8函数式编程和lambda表达式
文章目录函数式编程JDK8接口新特性函数接口方法引用函数式编程函数式编程更多时候是一种编程的思维方式,是一种方法论.函数式与命令式编程区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉 ...
- 油猴 tamperMonkey 在百度首页 添加自己的自定义链接
发现 GM_addStyle 函数不能用了,从写加载css函数. 剩下找个定位 添加内容 就很简单了. // ==UserScript== // @name helloWorld // @namesp ...
- slides 在线ppt && React && Angular
现在主流前端框架 有3个 Vue React Angular 如果有时间就都学习,理解一下他们的差异性~ 在线ppt的一个网站 这个是npm讲解的,不错 https://slides.com/seld ...
- 用户交互和if条件判断、嵌套
#a=input("提示语“)#接受的数据类型是字符串str#提示用户输入姓名 # a=input("请输入姓名") print(a) '''输出结果:请输入姓名小明 姓 ...
- OpenCV2:第三章 读取图像
一.简介 将图像文件读入内存,可以用cv::imread()函数 二.读取图像 Mat imread(const string& filename,int flags=1); Mat: 如果读 ...
- check.pl
比对两个文件并纠错 #!/usr/bin/perl use strict; use warnings; ###############################################m ...
- 2. 更改InnoDB redo日志文件的数量或大小
2. 更改InnoDB redo日志文件的数量或大小 要更改InnoDB 重做日志文件的数量或大小,请执行以下步骤: 1)停止MySQL服务器,确保正常关闭且没有错误发生 2) 编辑my.cnf以更改 ...
- Druid配置
spring-mybatis.xml <!-- 定义数据源Bean --> <!-- Druid --> <bean id="dataSource" ...
- 【HDU 6153】A Secret (KMP)
Problem Description Today is the birthday of SF,so VS gives two strings S1,S2 to SF as a present,whi ...