二分枚举答案,问题转化为计算至少取到一定体积,价格最少是多少,显然是贪心取最小,用线段树维护,然后因为要判断答案,所以可持久化一下即可。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 #define mid (l+r>>1)
5 #define ll long long
6 struct ji{
7 int d,p,l;
8 bool operator < (const ji &a)const{
9 return d>a.d;
10 }
11 }a[N];
12 int V,n,m,r[N],ls[N*20],rs[N*20];
13 ll x,y,sz[N*20],f[N*20];
14 void update(int k1,int &k2,int l,int r,int x,int y){
15 k2=++V;
16 if (l==r){
17 sz[k2]=sz[k1]+y;
18 f[k2]=f[k1]+1LL*y*l;
19 return;
20 }
21 ls[k2]=ls[k1];
22 rs[k2]=rs[k1];
23 if (x<=mid)update(ls[k1],ls[k2],l,mid,x,y);
24 else update(rs[k1],rs[k2],mid+1,r,x,y);
25 sz[k2]=sz[ls[k2]]+sz[rs[k2]];
26 f[k2]=f[ls[k2]]+f[rs[k2]];
27 }
28 ll query(int k,int l,int r,ll x){
29 if (l==r)return l*x;
30 if (x<sz[ls[k]])return query(ls[k],l,mid,x);
31 return query(rs[k],mid+1,r,x-sz[ls[k]])+f[ls[k]];
32 }
33 int main(){
34 scanf("%d%d",&n,&m);
35 for(int i=1;i<=n;i++)scanf("%d%d%d",&a[i].d,&a[i].p,&a[i].l);
36 sort(a+1,a+n+1);
37 for(int i=1;i<=n;i++)update(r[i-1],r[i],1,N-5,a[i].p,a[i].l);
38 for(int i=1;i<=m;i++){
39 scanf("%lld%lld",&x,&y);
40 if ((y>sz[r[n]])||(query(r[n],1,N-5,y)>x)){
41 printf("-1\n");
42 continue;
43 }
44 int l=1,rr=n;
45 while (l<rr){
46 int t=(l+rr>>1);
47 if ((y>sz[r[t]])||(query(r[t],1,N-5,y)>x))l=t+1;
48 else rr=t;
49 }
50 printf("%d\n",a[l].d);
51 }
52 }

[bzoj5343]混合果汁的更多相关文章

  1. [bzoj5343][Ctsc2018]混合果汁_二分答案_主席树

    混合果汁 bzoj-5343 Ctsc-2018 题目大意:给定$n$中果汁,第$i$种果汁的美味度为$d_i$,每升价格为$p_i$,每次最多添加$l_i$升.现在要求用这$n$中果汁调配出$m$杯 ...

  2. BZOJ5343[Ctsc2018]混合果汁——主席树+二分答案

    题目链接: CTSC2018混合果汁 显然如果美味度高的合法那么美味度低的一定合法,因为美味度低的可选方案包含美味度高的可选方案. 那么我们二分一个美味度作为答案然后考虑如何验证? 选择时显然要贪心的 ...

  3. BZOJ5343 & 洛谷4602 & LOJ2555:[CTSC2018]混合果汁——题解

    https://www.luogu.org/problemnew/show/P4602 https://loj.ac/problem/2555 https://www.lydsy.com/JudgeO ...

  4. BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】

    题目链接 BZOJ5343 题解 明显要二分一下美味度,然后用尽量少的价格去购买饮料,看看能否买到\(L\)升,然后看看能否控制价格在\(g\)内 尽量少的价格,就优先先选完便宜的饮料,由于询问的是一 ...

  5. 2019.01.14 bzoj5343: [Ctsc2018]混合果汁(整体二分+权值线段树)

    传送门 整体二分好题. 题意简述:nnn种果汁,每种有三个属性:美味度,单位体积价格,购买体积上限. 现在有mmm个询问,每次问能否混合出总体积大于某个值,总价格小于某个值的果汁,如果能,求所有方案中 ...

  6. BZOJ5343: [Ctsc2018]混合果汁 二分答案+主席树

    分析: 整体二分或二分答案+主席树,反正没有要求强制在线,两个都可以做... 贪心还是比较显然的,那么就是找前K大的和...和CQOI的任务查询系统很像 附上代码: #include <cstd ...

  7. 洛谷P4602 [CTSC2018]混合果汁(主席树)

    题目描述 小 R 热衷于做黑暗料理,尤其是混合果汁. 商店里有 nn 种果汁,编号为 0,1,\cdots,n-10,1,⋯,n−1 . ii 号果汁的美味度是 d_idi​ ,每升价格为 p_ipi ...

  8. [Bzoj]5343: [Ctsc2018]混合果汁

    5343: [Ctsc2018]混合果汁 题目描述 小 R 热衷于做黑暗料理,尤其是混合果汁. 商店里有 \(n\) 种果汁,编号为 \(0,1,\cdots,n-1\) .\(i\) 号果汁的美味度 ...

  9. BZOJ_5343_[Ctsc2018]混合果汁_二分答案+主席树

    BZOJ_5343_[Ctsc2018]混合果汁_二分答案+主席树 题意:给出每个果汁的价格p,美味度d,最多能放的体积l.定义果汁混合后的美味度为果汁的美味度的最小值. m次询问,要求花费不大于g, ...

随机推荐

  1. mysql增删改查——条件查询+模糊查询

    条件查询一般是 = 等于 >大于 <小于 >=大于等于 <=小于等于 <>区间 between and区间 or并且 and或者 in包含 like模糊查询 实例, ...

  2. 用C++实现的数独解题程序 SudokuSolver 2.3 及实例分析

    SudokuSolver 2.3 程序实现 用C++实现的数独解题程序 SudokuSolver 2.2 及实例分析 里新发现了一处可以改进 grp 算法的地方,本次版本实现了对应的改进 grp 算法 ...

  3. 【Java虚拟机5】Java内存模型(硬件层面的并发优化基础知识--指令乱序问题)

    前言 其实之前大家都了解过volatile,它的第一个作用是保证内存可见,第二个作用是禁止指令重排序.今天系统学习下为什么CPU会指令重排. 存储器的层次结构图 1.CPU乱序执行指令的根源 CPU读 ...

  4. 我们一起来回顾一下Synchronized关键字吧

    多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...

  5. 离线状态迁移Anaconda虚拟环境

    离线状态迁移Anaconda虚拟环境 同样是项目需求,需要布署的服务器上的Anaconda安装到了普通账户下 而后续所有的内容都需要通过root账户进行操作,而服务器已经布署,联网比较麻烦 本文提出, ...

  6. Beta-技术规格说明书

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-计划-功能规格说明书 一.架构与技术栈 1.整体架构 本项目的整体架构如上图所示.下面我们将对涉及 ...

  7. Scrum Meeting 0505

    零.说明 日期:2021-5-5 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 完成邮箱注册页面功 ...

  8. 使用vuex简单的实现系统中的状态管理

    最近项目中用到了vue,其中状态的集中管理使用到了vuex,因此就学习vuex做一个简单的记录.vuex的官方网址如下: https://vuex.vuejs.org/zh-cn/  vuex 当我们 ...

  9. Noip模拟45 2021.8.21

    一定别删大括号,检查是;还是, ceil函数里面要写double,否则根本没用!!!!!!! T1 打表 正解:打表 考场上很难真正把柿子理解着推出来 况且想要理解题意就很难,比如我就理解错了 半猜着 ...

  10. pyqgis学习细节

    关于LIKE通配符:LIKE的意思是模糊匹配,可以和% _搭配,%指的是任意字符,_指的是任一字符.