BZOJ5343 混合果汁

2022-08-26 01:09:07 字數 1073 閱讀 7106

傳送門:

這種最大值裡面的最小值問題顯然考慮二分233

現在二分出乙個美味度之後

問題就是大於這個美味度的所有值裡面取出前l個**最小的和能不能<=g

這個主席樹維護一下就行了

#include using

namespace

std;

int cnt,lson[5000005],rson[5000005],n,m,rt[5000005

];long

long sum[5000005],size[5000005

];struct

nodea[

5000005

];int

temp(node x,node y)

int insert(int rt1,int l,int r,long

long p,long

long

l)

int mid=(l+r)>>1

;

if (p<=mid) lson[id]=insert(lson[rt1],l,mid,p,l);

else rson[id]=insert(rson[rt1],mid+1

,r,p,l);

sum[id]=sum[lson[id]]+sum[rson[id]];

size[id]=size[lson[id]]+size[rson[id]];

return

id;}

long

long query(int rt1,int rt2,int l,int r,int

ned)

inttemp(node x,node y)

intmain()

sort(a+1,a+n+1

,temp);

for (int i=1;i<=n;i++)

rt[i]=insert(rt[i-1],1

,qwq,a[i].p,a[i].l);

while (m--)

printf(

"%d\n

",ans);

}return0;

}

bzoj5343 混合果汁

二分列舉答案,問題轉化為計算至少取到一定體積,最少是多少,顯然是貪心取最小,用線段樹維護,然後因為要判斷答案,所以可持久化一下即可。1 include2 using namespace std 3 define n 100005 4 define mid l r 1 5 define ll long...

BZOJ 5343 Ctsc2018 混合果汁

bzoj 5343 ctsc2018 混合果汁 二分答案 主席樹 題意 給出每個果汁的 p,美味度d,最多能放的體積l。定義果汁混合後的美味度為果汁的美味度的最小值。m次詢問,要求花費不大於g,總體積不小於l,求最大美味度,如果不能滿足,輸出 1。二分答案。然後轉變為求 前l小的果汁之和。類似任務查...

CTSC2018 混合果汁

為何要用整體二分,整體二分應該怎樣二分,和 poi2011 met meteors十分相像,這裡就不再重複。那麼對於乙個顧客來講,如果當前的區間總份數小於他想要的份數,或者是區間最小 大於他能接受的最大 就把該顧客劃分到右區間,如若滿足則劃分到左區間。想要和 poi2011 met meteors一...