小店购物
小店购物
题目描述
小 K 继续着他的旅行,然后他走进了一家小店。这家小店有 nn 个商品,小K 在这个小店转了一圈,于是他给每个商品确定了一个价值 w_iwi,每个商品也有一个价格 p_ipi 元。
小K 购物的方式有些特别,他购物会分若干轮,每轮他会选择从他当前有能力支付的商品中选择价值最高的商品购买一件(如果有相同,则优先选择价格低的商品购买),所以每轮他都会购买一件商品(每个商品个数是无穷多的),直到他不能买任何商品。
现在小K 想知道,假设他有 kk 元钱,那么他会买下价值总和为多少的商品。而随着环境、经济政策、市场需求、店主和小 K 的心情变化,小 K 对每个商品所定的价值和店主对每个商品所定的价格也在改变,而小 K 会时不时向你询问,请你依次为他解答。
输入格式
第一行两个正整数 n,mn,m,表示商品个数,以及修改和询问个数。
接下来 nn 行,每行两个正整数 w_i,p_iwi,pi,表示第 ii 件商品的价值和价格。
接下来 mm 行,每行为一个操作或询问,格式如下:
-
1 x w p,表示将第 xx 件商品的价值改为 ww,价格改为 pp;
-
2 2 k, 表示询问 kk 元钱所买下的商品价值总和。
输出格式
共若干行,每行依次对应一个询问
样例
样例输入1
3 3
1 1
2 2
3 3
2 10
1 1 6 6
2 10
样例输出1
10
9
数据范围与提示
测试点编号 | 约束条件 |
---|---|
1-2 | n,m,k \le 2000n,m,k≤2000 |
3-4 | 不存在修改操作 |
5-10 | n,m \le 100000n,m≤100000 |
对于100%的数据,$ 1 \le n,m \le 100000,1 \le w_i,p_i,w,p,k \le 10^9,1 \le x \le n1≤n,m≤100000,1≤wi,pi,w,p,k≤10^9,1≤x≤n $
来源
CSP2019常州集训11-1
Solution
可以发现一次购买k减少一半以上。
那么我们考虑暴力模拟买的过程,需要支持:查找p<=k的物品中w最大的,加入,删除物品。
考虑把w离散建线段树,每个叶节点开个mutiset存p.
线段树上就维护p的区间最小值,每次查找线段树上二分即可。
注意:1.离散化完线段树建树,查询,修改都是1~tot
2.mutiset直接删除值的话是全部删除,如果只删一个需要iterator
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2018-11-13 3625
2018-11-13 折线统计(line)