link

第一次写可持久化线段树,可以很明显的想到二分一个美味度,因为很明显此题具有单调性。

然后就可以随便乱搞了,按照美味度排序,然后按照每升价格建一个可持久化线段树,然后主要是check函数

当我们要判断一个美味度是否可行的时候,我们先可以将其下标得到,然后贪心去先选择价格最小的,然后就是个模拟了

复杂度:$O(m log^2 n)$

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;
inline int read(){int f=1,ans=0;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();}return f*ans;
}
const int MAXN=100001;
const int M=100001;
struct node{int d,p,l;
}x[MAXN];
bool cmp(node x1,node x2){if(x1.d==x2.d) return x1.p<x2.p;return x1.d<x2.d;
}
int ls[MAXN*20],cnt,rs[MAXN*20],tr[MAXN*20],ts[MAXN*20],tw[MAXN*20],n,T;
void update(int &rt,int las,int l,int r,int X,int ss,int ww){rt=++cnt;ls[rt]=ls[las],rs[rt]=rs[las],ts[rt]=ts[las]+ss,tw[rt]=tw[las]+ww;if(l==r) return;int mid=l+r>>1;if(X<=mid) update(ls[rt],ls[las],l,mid,X,ss,ww);else update(rs[rt],rs[las],mid+1,r,X,ss,ww);return;
}
int l,r,maxn,limw,lims;
int query(int rt,int l,int r,int W){if(l==r) return W*l;int mid=l+r>>1;if(ts[ls[rt]]>=W) return query(ls[rt],l,mid,W);else return tw[ls[rt]]+query(rs[rt],mid+1,r,W-ts[ls[rt]]);
}
bool check(int xx){if(lims>limw)return 0;if(ts[tr[xx]]>=lims&&query(tr[xx],1,M,lims)<=limw) return 1;return 0;
}
signed main(){n=read(),T=read();for(int i=1;i<=n;i++) x[i].d=read(),x[i].p=read(),x[i].l=read();x[0].d=-1;sort(x+1,x+n+1,cmp);for(int i=n;i>=1;i--) update(tr[i],tr[i+1],1,M,x[i].p,x[i].l,x[i].p*x[i].l);while(T--){limw=read(),lims=read();maxn=0,l=1,r=n;while(l<=r){int mid=l+r>>1;if(check(mid)) maxn=max(maxn,mid),l=mid+1;else r=mid-1;}printf("%d\n",x[maxn].d);}return 0;
}

View Code

转载于:https://www.cnblogs.com/si-rui-yang/p/10012631.html

[CTSC2018]混合果汁相关推荐

  1. P4602 [CTSC2018]混合果汁(主席树)

    P4602 [CTSC2018]混合果汁 共有nnn种果汁,第iii种果汁的美味度为did_idi​,每升价格为pip_ipi​,在一瓶混合果汁中,最多只能添加lil_ili​升. 有mmm个询问,每 ...

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

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

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

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

  4. [CTSC2018]混合果汁 二分 套 主席树上二分

    题意: n种果汁,第iii种果汁的美味程度是did_idi​有lil_ili​​升,价格是pip_ipi​升 mmm个询问,要求使用果汁的总量不小于LimLimLim,价格不超过GGG,最大化所用的果 ...

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

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

  6. PKUSC2018训练日程(4.18~5.30)

    (总计:共66题) 4.18~4.25:19题 4.26~5.2:17题 5.3~5.9: 6题 5.10~5.16: 6题 5.17~5.23: 9题 5.24~5.30: 9题 4.18 [BZO ...

  7. 【学习笔记】整体二分

    文章目录 引 整体二分 几道模板题 Dynamic Rankings [ZJOI2013]K大数查询 [国家集训队]矩阵乘法 [THUPC2017] 天天爱射击 [CTSC2018]混合果汁 引 例1 ...

  8. 近期刷题总结 [19 03 17]

    目录 P3703 [SDOI2017]树点涂色 [LCT + 线段树] CF739B Alyona and a tree [主席树] P4098 [HEOI2013]ALO [双向链表 + 可持久化0 ...

  9. P4564 [CTSC2018]假面(期望)

    P4564 [CTSC2018]假面 首先容易看出结界技能对第二问敌方剩余生命值期望没有影响. 如何求出第iii个人的剩余生命值期望? 只需要根据Ei=∑j=0aij×fi,jE_i=\sum_{j= ...

最新文章

  1. [PHP源码阅读]trim、rtrim、ltrim函数
  2. 如何安装和使用RAutomation
  3. 超过100本的linux免费书籍
  4. DisplayPageBoundaries 打开word后自动将页面间空白隐藏 (auto+定时器)
  5. 滥用static_沉思滥用:“强力使用,破坏滥用”
  6. 28. css样式中px转rem
  7. 开直播辣!生成对抗网络全脉络梳理!
  8. 【事件驱动】【数码管识别】(C++动态链接库的封装和调用)
  9. 高德地图获取经纬度坐标
  10. html 文件 转换成mp4视频,[swf转视频]一个带有Play播放按钮的swf文件怎么转换成mp4视频...
  11. 文本挖掘学习笔记(二):文档信息向量化与主题关键词提取
  12. html主题标签是什么意思,HTML5所有标签汇总及标签意义解释
  13. /*模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每个月还款金额: 总利息=贷款金额*利率; 每月还款金额=(贷款金额+总利息)/贷款年限
  14. 食物语服务器什么时候维护,食物语更新公告
  15. Spring Boot面试必问:启动流程
  16. SiC MOSFET驱动电压的分析
  17. 快速排序(由荷兰国旗问题到快排)
  18. jqGrid学习笔记(一)
  19. Git概念:什么是分支
  20. F2FS源码分析系列文章目录

热门文章

  1. 阿里云服务器如何加强服务器的安全?有哪些安全措施?
  2. 订单可视化(智能制造、流程再造、企业信息化) 第三篇 订单可视化定义及目标...
  3. C语言指针(个人的认识)
  4. Java Junit
  5. QGIS简介与源代码编译
  6. ASA防火墙11 应用层检测
  7. 深度学习笔记6:Learning color features with Sparse Autoencoders
  8. 【Python-ML】SKlearn库性能指标ROC-AUC
  9. (转载)Linux OOM Killer个人总结
  10. latex基础(文字,图,表)