[CTSC2018]混合果汁
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]混合果汁相关推荐
- P4602 [CTSC2018]混合果汁(主席树)
P4602 [CTSC2018]混合果汁 共有nnn种果汁,第iii种果汁的美味度为did_idi,每升价格为pip_ipi,在一瓶混合果汁中,最多只能添加lil_ili升. 有mmm个询问,每 ...
- [Bzoj]5343: [Ctsc2018]混合果汁
5343: [Ctsc2018]混合果汁 题目描述 小 R 热衷于做黑暗料理,尤其是混合果汁. 商店里有 \(n\) 种果汁,编号为 \(0,1,\cdots,n-1\) .\(i\) 号果汁的美味度 ...
- BZOJ5343[Ctsc2018]混合果汁——主席树+二分答案
题目链接: CTSC2018混合果汁 显然如果美味度高的合法那么美味度低的一定合法,因为美味度低的可选方案包含美味度高的可选方案. 那么我们二分一个美味度作为答案然后考虑如何验证? 选择时显然要贪心的 ...
- [CTSC2018]混合果汁 二分 套 主席树上二分
题意: n种果汁,第iii种果汁的美味程度是did_idi有lil_ili升,价格是pip_ipi升 mmm个询问,要求使用果汁的总量不小于LimLimLim,价格不超过GGG,最大化所用的果 ...
- BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】
题目链接 BZOJ5343 题解 明显要二分一下美味度,然后用尽量少的价格去购买饮料,看看能否买到\(L\)升,然后看看能否控制价格在\(g\)内 尽量少的价格,就优先先选完便宜的饮料,由于询问的是一 ...
- 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 ...
- 【学习笔记】整体二分
文章目录 引 整体二分 几道模板题 Dynamic Rankings [ZJOI2013]K大数查询 [国家集训队]矩阵乘法 [THUPC2017] 天天爱射击 [CTSC2018]混合果汁 引 例1 ...
- 近期刷题总结 [19 03 17]
目录 P3703 [SDOI2017]树点涂色 [LCT + 线段树] CF739B Alyona and a tree [主席树] P4098 [HEOI2013]ALO [双向链表 + 可持久化0 ...
- P4564 [CTSC2018]假面(期望)
P4564 [CTSC2018]假面 首先容易看出结界技能对第二问敌方剩余生命值期望没有影响. 如何求出第iii个人的剩余生命值期望? 只需要根据Ei=∑j=0aij×fi,jE_i=\sum_{j= ...
最新文章
- [PHP源码阅读]trim、rtrim、ltrim函数
- 如何安装和使用RAutomation
- 超过100本的linux免费书籍
- DisplayPageBoundaries 打开word后自动将页面间空白隐藏 (auto+定时器)
- 滥用static_沉思滥用:“强力使用,破坏滥用”
- 28. css样式中px转rem
- 开直播辣!生成对抗网络全脉络梳理!
- 【事件驱动】【数码管识别】(C++动态链接库的封装和调用)
- 高德地图获取经纬度坐标
- html 文件 转换成mp4视频,[swf转视频]一个带有Play播放按钮的swf文件怎么转换成mp4视频...
- 文本挖掘学习笔记(二):文档信息向量化与主题关键词提取
- html主题标签是什么意思,HTML5所有标签汇总及标签意义解释
- /*模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每个月还款金额: 总利息=贷款金额*利率; 每月还款金额=(贷款金额+总利息)/贷款年限
- 食物语服务器什么时候维护,食物语更新公告
- Spring Boot面试必问:启动流程
- SiC MOSFET驱动电压的分析
- 快速排序(由荷兰国旗问题到快排)
- jqGrid学习笔记(一)
- Git概念:什么是分支
- F2FS源码分析系列文章目录