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

 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. nginx访问权限问题

    1.问题 server { listen 8011; server_name test.cn; location ~ \.php?.*$ { root /home/zhj/; #fastcgi_pas ...

  2. 独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless

    作者 | 杨丽 出品 | 雷锋网产业组 "Serverless 其实离我们并没有那么遥远". 如果你是一名互联网研发人员,那么极有可能了解并应用过 Serverless 这套技术体 ...

  3. 第29篇-调用Java主类的main()方法

    在第1篇中大概介绍过Java中主类方法main()的调用过程,这一篇介绍的详细一点,大概的调用过程如下图所示. 其中浅红色的函数由主线程执行,而另外的浅绿色部分由另外一个线程执行,这个线程最终也会负责 ...

  4. Java初步学习——2021.10.10每日总结,第五周周日

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天继续学习菜鸟教程java字符串实例 5.字符串反转--reverse方法 public class Main { pub ...

  5. python中冒泡排序代码实现

    1.冒泡排序代码如下图: #冒泡算法l=[12,4,56,10,6,2]for i in range(0,6): for j in range(i+1,6): if l[i]>l[j]: a=l ...

  6. Linux Manual

    man 命令用来访问存储在Linux系统上的手册页面.在想要查找的工具的名称前面输入man命 令,就可以找到那个工具相应的手册条目. 手册页不是唯一的参考资料.还有另一种叫作 info 页面的信息.可 ...

  7. 【UE4 C++】 获取Actor、Controller、Pawn、Character

    获取 Actor TActorIterator 遍历 可以用于遍历 Actor,也可以用于遍历 Component for (TActorIterator<AStaticMeshActor> ...

  8. 性能利器 Takin 来了!首个生产环境全链路压测平台正式开源

    6 月 25 日,国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为 Takin. 目前中国人寿.顺丰科技.希音.中通快递.中国移动.永辉超 ...

  9. 6月8日 Scrum Meeting

    日期:2021年6月8日 会议主要内容概述: 确定6.9日下午两点到五点集中对接 初步确定主题配色和echarts默认图表颜色 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作 ...

  10. 第6次 Beta Scrum Meeting

    本次会议为Beta阶段第6次Scrum Meeting会议 会议概要 会议时间:2021年6月8日 会议地点:「腾讯会议」线上进行 会议时长:15min 会议内容简介:对完成工作进行阶段性汇报:对下一 ...