首页 > TAG信息列表 > CF702F
CF702F T-Shirts
有 \(n\) 种 T 恤,每种有价格 \(c_i\) 和品质 \(q_i\)。 有 \(m\) 个人要买 T 恤,第 \(i\) 个人有 \(v_i\) 元,每人每次都会买一件能买得起的 \(q_i\) 最大的 T 恤。一个人只能买一种 T 恤一件,所有人之间都是独立的。 问最后每个人买了多少件 T 恤?如果有多个 \(q_i\) 最大的 T 恤,会CF702F-T-Shirts【FhqTreap】
正题 题目链接:https://www.luogu.com.cn/problem/CF702F 题目大意 有\(n\)个物品,第\(i\)个价格为\(c_i\),质量为\(q_i\)。 然后有\(m\)个询问,假设一个人有\(v_i\)块,他每次会买他能买得起的\(q_i\)最大的(如果相同就\(c_i\)最小的)物品购买,直到买不起为止,一个物品只能买一次,求他最后CF702F T-Shirts 题解
Description Luogu传送门 Solution 先对物品按照品质从大到小排序,相同品质的按价格从小到大排序。 依次枚举每一个物品,考虑对于一个物品,其价格为 \(c\),品质为 \(q\): 拥有钱数小于 \(c\) 的人买不起,不用管。 拥有钱数大于等于 \(c\) 的人买得起,也必须买(物品是按品质从大到小排序的【CF702F】T-Shirts
题目 题目链接:https://codeforces.com/contest/702/problem/F 有 \(n\) 种T恤,每种有价格 \(c_i\) 和品质 \(q_i\)。 有 \(m\) 个人要买 \(T\) 恤,第 \(i\) 个人有 \(v_i\) 元,每人每次都会买一件能买得起的 \(q_i\) 最大的T恤。一个人只能买一种T恤一件,所有人之间都是独立的。 问最[CF702F] T-Shirts
\(\text{Problem}:\)T-Shirts \(\text{Solution}:\) 在序列操作的问题中,一种常规的思想是使得被操作物品的信息尽可能少。故转化题目为:将物品以 \(q_{i}\) 从大到小为第一关键字,\(c_{i}\) 从小到大为第二关键字排序。枚举物品 \(i\),对于每个人 \(j\),若 \(v_{j}\geq c_{i}\),则 \(v_CF702F T-Shirts
题目 考虑把商品按质量排序之后一个个处理,这样能买当前商品的人就是拥有钱数大于等于当前商品价格的人。 那么我们现在需要支持的就是把所有剩余钱数\(\ge k\)的人钱数\(-k\),答案\(+1\)。 这东西看上去并不是那么好做,我们有一个比较优雅的结合暴力的平衡树做法。 加入当前物品的CF702F T-Shirts
cf luogu 暴力是挨个考虑,这里不妨整体考虑,先把所有T恤按照价值从大到小为第一关键字,价格从小到大为第二关键字排序,然后依次考虑,可以发现这时候剩余钱数\(>c_i\)的会买,这会导致他们钱数\(-c_i\),答案\(+1\).因为这一段人是连续区间,所以考虑用平衡树维护,每次找到钱数\(.=c_i