傳送門:
這種最大值裡面的最小值問題顯然考慮二分233
現在二分出乙個美味度之後
問題就是大於這個美味度的所有值裡面取出前l個**最小的和能不能<=g
這個主席樹維護一下就行了
#include usingnamespace
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一...