BZOJ_5343_[Ctsc2018]混合果汁_二分答案+主席树
2018-06-09 10:23
411 查看
BZOJ_5343_[Ctsc2018]混合果汁_二分答案+主席树
题意:给出每个果汁的价格p,美味度d,最多能放的体积l。定义果汁混合后的美味度为果汁的美味度的最小值。
m次询问,要求花费不大于g,总体积不小于L,求最大美味度,如果不能满足,输出-1。
二分答案。然后转变为求价格前L小的果汁之和。
类似任务查询系统那道题。
权值线段树维护结点总体积和全部购买的总花费。
按美味度建立主席树即可。
代码:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; #define N 100050 #define inf 100000 struct J { int d,p,l; bool operator < (const J &x) const { return d<x.d; } }a ; int n,root ,ls[N*20],rs[N*20],m,cnt; ll siz[N*20],cost[N*20],s ; void insert(int l,int r,int idx,int x,int &y) { y=++cnt; siz[y]=siz[x]+a[idx].l; cost[y]=cost[x]+1ll*a[idx].l*a[idx].p; if(l==r) return ; int mid=(l+r)>>1; if(a[idx].p<=mid) rs[y]=rs[x],insert(l,mid,idx,ls[x],ls[y]); else ls[y]=ls[x],insert(mid+1,r,idx,rs[x],rs[y]); } ll query(int l,int r,ll c,int x,int y) { if(l==r) return c*l; int mid=(l+r)>>1; ll sizls=siz[ls[y]]-siz[ls[x]]; if(sizls>=c) return query(l,mid,c,ls[x],ls[y]); else return query(mid+1,r,c-sizls,rs[x],rs[y])+cost[ls[y]]-cost[ls[x]]; } bool check(int x,ll need,ll val) { if(s -s[x-1]<need) return 0; return query(1,inf,need,root[x-1],root )<=val; } int main() { scanf("%d%d",&n,&m); int i; for(i=1;i<=n;i++) scanf("%d%d%d",&a[i].d,&a[i].p,&a[i].l); sort(a+1,a+n+1); for(i=1;i<=n;i++) insert(1,inf,i,root[i-1],root[i]),s[i]=s[i-1]+a[i].l; ll x,y; while(m--) { scanf("%lld%lld",&x,&y); int l=1,r=n+1; while(l<r) { int mid=(l+r)>>1; if(check(mid,y,x)) l=mid+1; else r=mid; } printf("%d\n",l-1?a[l-1].d:-1); } }
相关文章推荐
- BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】
- BZOJ5343: [Ctsc2018]混合果汁 二分答案+主席树
- [CTSC2018]混合果汁(二分答案+主席树)
- [ctsc2018] 混合果汁 【可持久化线段树】【二分答案】
- BZOJ5343 & 洛谷4602 & LOJ2555:[CTSC2018]混合果汁——题解
- BZOJ2653 middle(二分答案+主席树)
- Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
- [CTSC2018]混合果汁
- 【bzoj2653】【middle】【主席树+二分答案】
- [BZOJ2095]-[Poi2010]Bridges-二分答案+混合图欧拉回路判定
- BZOJ 1146 CTSC 2008 网络管理 Network 树链剖分+二分答案+平衡树
- 【BZOJ5251】【八省联考2018】劈配(网络流,二分答案)
- bzoj 2653 middle 二分答案 主席树判定
- [BZOJ2653]middle 主席树+二分答案
- 【BZOJ】1146: [CTSC2008]网络管理Network(树链剖分+线段树套平衡树+二分 / dfs序+树状数组+主席树)
- BZOJ 4556 [Tjoi2016&Heoi2016]字符串 ——后缀数组 ST表 主席树 二分答案
- 【bzoj2653】【middle】【主席树+二分答案】
- BZOJ3277 串(后缀数组+二分答案+主席树)
- [CTSC2018]混合果汁
- [BZOJ]2095 二分答案 + 混合图欧拉回路判定