分析:

整体二分或二分答案+主席树,反正没有要求强制在线,两个都可以做...

贪心还是比较显然的,那么就是找前K大的和...和CQOI的任务查询系统很像

附上代码:

#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
#define N 100005
#define ll long long
#define lson l,m,tr[rt].ls
#define rson m+1,r,tr[rt].rs
struct node{int ls,rs;long long sum,siz;}tr[N*20];
struct A{int d,p,l;}a[N];
int n,Q,rot[N],cnt;
bool cmp(const A &a,const A &b){return a.d<b.d;}
void insert(int x,int v,int c,int l,int r,int &rt)
{
rt=++cnt;tr[rt].siz=tr[x].siz+c;tr[rt].sum=tr[x].sum+1ll*v*c;if(l==r)return;int m=(l+r)>>1;
if(v<=m)tr[rt].rs=tr[x].rs,insert(tr[x].ls,v,c,lson);else tr[rt].ls=tr[x].ls,insert(tr[x].rs,v,c,rson);
}
ll query(int x,ll k,int l,int r,int rt)
{
// printf("%d %d %lld %lld %lld\n",l,r,k,tr[tr[x].ls].sum,tr[tr[rt].ls].sum);
if(l==r)return k*l;int m=(l+r)>>1;ll sizls=tr[tr[rt].ls].siz-tr[tr[x].ls].siz;
if(sizls>=k)return query(tr[x].ls,k,lson);return query(tr[x].rs,k-sizls,rson)+tr[tr[rt].ls].sum-tr[tr[x].ls].sum;
}
int check(int m,ll x,ll y)
{
if(!m)return 0;
if(tr[rot[100000]].siz-tr[rot[m-1]].siz<y)return 0;
ll t1=query(rot[m-1],y,1,100000,rot[100000]);
// printf("%d %lld\n",m,t1);
return t1<=x;
}
int main()
{
scanf("%d%d",&n,&Q);
for(int i=1;i<=n;i++)scanf("%d%d%d",&a[i].d,&a[i].p,&a[i].l);sort(a+1,a+n+1,cmp);
for(int i=1,h=1;i<=100000;i++)
{
rot[i]=rot[i-1];
while(a[h].d==i)insert(rot[i],a[h].p,a[h].l,1,100000,rot[i]),h++;
}
while(Q--)
{
ll x,y;scanf("%lld%lld",&x,&y);
int l=0,r=100001;
while(l<r)
{
int m=(l+r)>>1;
if(check(m,x,y))l=m+1;
else r=m;
}
printf("%d\n",l-1);
}
}

  

BZOJ5343: [Ctsc2018]混合果汁 二分答案+主席树的更多相关文章

  1. [CTSC2018]混合果汁(二分答案+主席树)

    考场上写了60分的二分答案,又写了15分的主席树,然后就弃了.. 合起来就A了啊!主席树忘了开20倍空间最后还炸掉了. 最水的签到题被我扔了,主要还是不会用线段树求前缀和. 做法应该是比较显然的,首先 ...

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

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

  3. 2019杭电多校第四场hdu6621 K-th Closest Distance(二分答案+主席树)

    K-th Closest Distance 题目传送门 解题思路 二分答案+主席树 先建主席树,然后二分答案mid,在l和r的区间内查询[p-mid, p+mid]的范围内的数的个数,如果大于k则说明 ...

  4. BZOJ4556 [Tjoi2016&Heoi2016]字符串 SA ST表 二分答案 主席树

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4556.html 题目传送门 - BZOJ4556 题意 给定一个长度为 $n$ 的字符串 $s$ . ...

  5. BZOJ1926[Sdoi2010]粟粟的书架——二分答案+主席树

    题目描述 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen 的文章.粟粟家中有一个 R行C 列的巨型书架,书架的每一个位 ...

  6. Codeforces Round #276 (Div. 1) E. Sign on Fence (二分答案 主席树 区间合并)

    链接:http://codeforces.com/contest/484/problem/E 题意: 给你n个数的,每个数代表高度: 再给出m个询问,每次询问[l,r]区间内连续w个数的最大的最小值: ...

  7. BZOJ 4556: [Tjoi2016&Heoi2016]字符串(后缀数组 + 二分答案 + 主席树 + ST表 or 后缀数组 + 暴力)

    题意 一个长为 \(n\) 的字符串 \(s\),和 \(m\) 个询问.每次询问有 \(4\) 个参数分别为 \(a,b,c,d\). 要你告诉它 \(s[a...b]\) 中的所有子串 和 \(s ...

  8. BZOJ2653 middle(二分答案+主席树)

    与中位数有关的题二分答案是很常用的trick.二分答案之后,将所有大于它的看成1小于它的看成-1,那么只需要判断是否存在满足要求的一段和不小于0. 由于每个位置是1还是-1并不固定,似乎不是很好算.考 ...

  9. BZOJ3277 串(后缀数组+二分答案+主席树)

    因为不会SAM,考虑SA.将所有串连起来并加分隔符,每次考虑计算以某个位置开始的子串有多少个合法. 对此首先二分答案,找到名次数组上的一个区间,那么只需要统计有多少个所给串在该区间内出现就可以了.这是 ...

随机推荐

  1. 【代码笔记】iOS-performSelectorOnMainThread

    代码: RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewControl ...

  2. MyEclipse tomcat jsk配置--- jvm blind 异常

    -Xms1200m -Xmx1200m -XX:PermSize=64M-XX:MaxPermSize=256m-XX:ReservedCodeCacheSize=48m-Dcom.sun.manag ...

  3. android展示注册进度效果源码

  4. Vue.js入门系列(一)

    Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一)  http://www.cnblogs.com/gdsblog/p/78 ...

  5. [Android] 旋转照片/图片

    今天比较闲(是任务做完了,不是偷懒),就多更新几篇,补一下之前做的东西. 原文地址请保留http://www.cnblogs.com/rossoneri/p/3995306.html 推荐阅读: An ...

  6. UWP开发细节记录:IStream 和 IRandomAccessStream^ 以及 IMFByteStream 互转

    IStream 和 IRandomAccessStream^ 互转 IRandomAccessStream^ --> IStream:  CreateStreamOverRandomAccess ...

  7. mysql Alter table设置default的问题,是bug么?

    不用不知道,用了没用? 昨天在线上创建了一个表,其中有两个列是timestamp类型的,创建语句假设是这样的: create table timetest(id int, createtime tim ...

  8. sql server 用户'sa'登录失败(错误18456)

    转载于:http://thenear.blog.51cto.com/4686262/865544 用户'sa'登录失败(错误18456)解决方案图解     当我们在使用sql server 的时候可 ...

  9. Oracle EBS OPM 创建生产批

    --创建生产批 --created by jenrry DECLARE x_message_count NUMBER; x_message_list VARCHAR2 (2000); x_return ...

  10. sqlserver sql优化案例及思路

    始sql: SELECT TOP 100 PERCENT ZZ.CREW_NAME AS 机组, ZZ.CREW_ID, AA.年度时间, CC.当月时间, DD.连续七天时间 AS 最近七天 FRO ...