首页 > 其他分享 >qbxt 4220: 矿泉水

qbxt 4220: 矿泉水

时间:2023-09-29 17:11:42浏览次数:39  
标签:int 矿泉水 tr 发放 qbxt 4220

原题

一行人,共有 \(n\) 个人,排成一排,在等待你发放矿泉水。
你会发放 \(m\) 轮矿泉水,第 \(i\) 次,你会给前 \(a_i\) 个人发放矿泉水,然后你会发放 \(b_i\) 瓶矿泉水。
具体的,你每次会一瓶一瓶的发矿泉水,每一轮发放 \(b_i\) 次。
每次,你会把矿泉水给最需要的人,即前 \(a_i\) 个人中,当前拥有的矿泉水最少的人,如果有多个人拥有数量相同,你会发给编号靠前的人。
最终,你想知道每个人获得的矿泉水数量。
\(n,m \leq 10^5\)

首先,我们看答案是单调不降的,因此我们可以线段树 \(+\) 二分,而不是树套树之类的

从来没做过在线段树某个前缀 \(or\) 区间上二分的问题,学到了

LL k;
int search(int x, int p = 1){
	int l = tr[ p ].l, r = tr[ p ].r;
	if(r <= x && (LL)tr[ p ].maxs * (x - l + 1) - tr[ p ].sum <= k){
		k += tr[ p ].sum;
		return l;
	}
	if(l == r) return r + 1;
	PushDown(p); int mid = l + r >> 1;
	if(x <= mid) return search(x, ls);
	int rt = search(x, rs);
	if(rt == mid + 1) return search(x, ls);
	return rt;
}

大致就是判断右边如果能放就放右边,否则放左边

最终复杂度 \(O(n \log n)\)

标签:int,矿泉水,tr,发放,qbxt,4220
From: https://www.cnblogs.com/fox-konata/p/17737106.html

相关文章

  • qbxt 4218: 等差
    原题给定一个等差数列,求他的各项乘积,你只需要输出其对\(1145141\)取模的结果。具体的,每组给定\(d,n,a\)分别表示公差,长度,首项,你需要求出\(\prod_{i=0}^{n-1}(a+i\timesd)\mod1145141\)。非常降智好的一道题,赛时往根号分治想,然后寄掉了我们考虑\(d=1\)怎么做,显然......
  • qbxt 4179 积木中赛(block)
    原题小P准备了一次预测活动,每个参与活动的人都可以在PPP队获胜,GGG队获胜和平局三种结果中选择自己要预测的一种。如果第\(i\)个人预测正确,那么小P需要付给他\(a_i\)元,否则他需要给小P付\(b_i\)元。小P目前已经收到了\(n\)个人报名参加活动的信息,并知道他们每......
  • 从长三角走到全国,洞庭山矿泉水集团走出品牌进阶之路
    夏季是饮用水旺季,随着消费者对饮水需求的关注激增,也刺激了饮用水行业竞争的异常激烈。因此,想要在这个市场中脱颖而出,必须具备独特的竞争优势。近日,在由中国饮料工业协会包装饮用水分会主办,中国饮料工业协会、丹江口市政府支持的“2023中国包装饮用水峰会”上,江苏洞庭山矿泉水集团有......
  • 矿泉水、纯净水、白开水,长期喝哪种水更健康?
     今欲购水,市场水的品牌可谓五花八门,什么矿物质水、什么天然水、什么人体需要补充微量元素等等,好不让人不头大,经仔细研究一番,有所获。 一、水的分类1、按照水的种类分类(5种):饮用水、矿泉水、天然水、纯净水、白开水;2、按照有无微量元素分类无矿物质:纯净水;......
  • 暑假QBXT集训01
    Day1有向无环图一种特殊的有向图,没有任何环,简写为DAG。对于这种图,我们就有“拓扑序”。拓扑序不是唯一解。拓扑排序流程:每次删去一个没有入度的点加入拓扑序中,如此重复下去即可。P1807最长路题目描述:设\(G\)为有\(n\)个顶点的带权有向无环图,\(G\)中各个顶点的编......
  • qbxt day3
    有向无环图有向无环图是一种特殊的图,其最大的意义在于能够拓扑排序。拓扑排序是指给这个图的\(n\)个点排序,使得所有\(x\rightarrowy\)的边\(x\)点都在\(y\)前面。求最短路是\(O_{(n+m)}\)的,也可以在这张图上做DP。拓扑排序考虑维护一个入度为\(0\)的点的集......
  • 2023 qbxt 笔记整理
    洛谷P4460n<20,试试状压设\(dp[i][j]\)表示状态为i,最后一个点为j(当前在点j)。枚举当前点为i,要转移的点为k转移:$dp[i|(1<<k-1)][k]+=dp[i][j]$还需要判断一下三点连线在不在同一条直线上。代码:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inl......
  • qbxt day2
    DFS生成树对于任意一棵DFS生成树,其必定只有返祖边,没有横叉边,在求割点和强联通分量上方便很多。最小生成树求法:https://www.cnblogs.com/yifan0305/p/17363255.html严格次小生成树、非严格次小生成树。最短路问题Floyd求最短路、最小环,传递闭包。链接:在写着,会补得。......
  • qbxt day1
    数学知识现有奇数个人,两两间可能认识或不认识,请证明永远存在一个认识偶数个人的人。将其转化成更强的问题:给定一张奇数个点的图\(G\),证明度数为偶数的点的个数为奇数。继续考虑它的相反的问题:给定一张奇数个点的图\(G\),证明度数为奇数的结点的个数为偶数考虑所有点......
  • P4220 题解
    前言题目传送门!更好的阅读体验?思路代码为了使代码更容易通过,可以像我一样膜拜大佬,获得随机种子,通过的概率更大。#include<iostream>#include<cstdio>#include<......