news 2026/4/16 18:14:07

《P4602 [CTSC2018] 混合果汁》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P4602 [CTSC2018] 混合果汁》

题目描述

小 R 热衷于做黑暗料理,尤其是混合果汁。

商店里有 n 种果汁,编号为 0,1,⋯,n−1 。i 号果汁的美味度是 di​,每升价格为 pi​。小 R 在制作混合果汁时,还有一些特殊的规定,即在一瓶混合果汁中,i 号果汁最多只能添加 li​ 升。

现在有 m 个小朋友过来找小 R 要混合果汁喝,他们都希望小 R 用商店里的果汁制作成一瓶混合果汁。其中,第 j 个小朋友希望他得到的混合果汁总价格不大于 gj​,体积不小于 Lj​。在上述这些限制条件下,小朋友们还希望混合果汁的美味度尽可能地高,一瓶混合果汁的美味度等于所有参与混合的果汁的美味度的最小值。请你计算每个小朋友能喝到的最美味的混合果汁的美味度。

输入格式

输入第一行包含两个正整数 n,m,表示果汁的种数和小朋友的数量。

接下来 n 行,每行三个正整数 di​,pi​,li​,表示 i 号果汁的美味度为 di​,每升价格为 pi​,在一瓶果汁中的添加上限为 li​。

接下来 m 行依次描述所有小朋友:每行两个数正整数 gj​,Lj​ 描述一个小朋友,表示他最多能支付 gj​ 元钱,他想要至少 Lj​ 升果汁。

输出格式

对于所有小朋友依次输出:对于每个小朋友,输出一行,包含一个整数,表示他能喝到的最美味的混合果汁的美味度。如果无法满足他的需求,则输出 −1。

输入输出样例

输入 #1复制

3 4 1 3 5 2 1 3 3 2 5 6 3 5 3 10 10 20 10

输出 #1复制

3 2 -1 1

说明/提示

对于所有的测试数据,保证 n,m≤100000,1≤di​,pi​,li​≤105,1≤gj​,Lj​≤1018。

测试点编号n=m=其他限制
1,2,31010
4,5,6500500
7,8,950005000
10,11,12100000100000pi​=1
13,14,15100000100000li​=1
16,17,18,19,20100000100000

代码实现:

#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #define N 100005 #define INF 0x3f3f3f3f using namespace std; inline int rd(){ int x=0,y=0; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')y=1;ch=getchar();} while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); return y?-x:x; } template<typename T> inline T rd(){ T x=0; int y=0; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')y=1;ch=getchar();} while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); return y?-x:x; } int rt[N]; struct drink{ int d, l, rk; long long p; }dr[N]; struct ct{ int lc[N<<5], rc[N<<5], cnt; long long s[N<<5], c[N<<5], val[N<<5]; // s: l*p的和, c: l的和, val: 叶子节点的p #define lc(x) lc[x] #define rc(x) rc[x] void build(int pos, int l, int r, int &nd, int old, long long L, long long P){ nd=++cnt; s[nd]=s[old]+L*P; c[nd]=c[old]+L; if(l==r){ val[nd]=P; return; } int mid=l+r>>1; if(pos<=mid)rc(nd)=rc(old),build(pos,l,mid,lc(nd),lc(old),L,P); else lc(nd)=lc(old),build(pos,mid+1,r,rc(nd),rc(old),L,P); } long long qry(int l, int r, int nd, long long g){ if(l==r)return nd?min((g/val[nd]),c[nd]):0; int mid=l+r>>1; if(s[lc(nd)]>g)return qry(l,mid,lc(nd),g); else return qry(mid+1,r,rc(nd),g-s[lc(nd)])+c[lc(nd)]; } }tr; inline bool cmp1(drink x, drink y){return x.p < y.p;} inline bool cmp2(drink x, drink y){return x.d > y.d;} int main(){ int n=rd(), m=rd(); for(register int i=1;i<=n;++i) dr[i].d=rd(), dr[i].p=rd<long long>(), dr[i].l=rd(); sort(dr+1, dr+1+n, cmp1); for(register int i=1;i<=n;++i)dr[i].rk=i; sort(dr+1, dr+1+n, cmp2); for(register int i=1;i<=n;++i) tr.build(dr[i].rk, 1, n, rt[i], rt[i-1], dr[i].l, dr[i].p); int l, r; while(m--){ long long g=rd<long long>(), L=rd<long long>(); int ans=-1; l=1, r=n; while(l<=r){ int mid=l+r>>1; long long k=tr.qry(1, n, rt[mid], g); if(k>=L)ans=dr[mid].d, r=mid-1; else l=mid+1; } printf("%d\n", ans); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:04:22

Vosk 中文离线语音识别-Android studio软件源代码-java语言

Vosk 中文离线语音识别&#xff1a;简介与使用说明 一、软件简介 &#x1f399;️ 软件名称&#xff1a;Vosk 离线语音识别核心功能&#xff1a;一款基于 Vosk 开源引擎的中文离线语音识别工具&#xff0c;支持麦克风实时语音转文字和音频文件识别&#xff0c;全程无需联网&…

作者头像 李华
网站建设 2026/4/16 9:03:40

STM32 通过 WIFI 实现远程 OTA 升级

stm32 远程升级 OTA升级 使用WIFI连接升级 芯片 stm32f103系列 升级方式:wifi模块?自建服务器 升级文件为BIN文件&#xff0c;需要使用配套的exe文件将原来的bin文件内的数据&#xff0c;每隔128个字节进行crc16检验&#xff0c;并添加到后面。 单片机下载后&#xff0c;每下载…

作者头像 李华
网站建设 2026/4/16 9:06:31

加州理工与斯坦福联合揭秘大语言模型推理失误的真相

这项由加州理工学院和斯坦福大学联合开展的研究发表于2026年1月的《机器学习研究汇刊》&#xff0c;研究人员首次系统性地梳理和分析了大语言模型在推理过程中的各种失误表现。有兴趣深入了解的读者可以通过OpenReview平台的论文编号vnX1WHMNmz查询完整论文。你有没有想过&…

作者头像 李华
网站建设 2026/4/16 10:59:47

AI应用架构师进阶:容量规划中的GPU虚拟化技术与资源调度

AI应用架构师进阶&#xff1a;容量规划中的GPU虚拟化技术与资源调度 1. 引入与连接 1.1 引人入胜的开场 在当今数字化浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技术犹如一颗璀璨的明星&#xff0c;照亮了各个领域的发展道路。从智能语音助手到自动驾驶汽车&#x…

作者头像 李华
网站建设 2026/4/16 9:04:10

Hadoop与社交网络:关系图谱挖掘技术

Hadoop与社交网络&#xff1a;大规模关系图谱挖掘的技术实践与案例解析 一、引言&#xff1a;当社交网络遇到“数据洪流” 清晨打开微信&#xff0c;你收到3条好友请求&#xff1b;刷抖音时&#xff0c;系统推荐了“可能认识的人”&#xff1b;微博热搜里&#xff0c;某明星的绯…

作者头像 李华
网站建设 2026/4/16 11:07:24

如何均衡模拟链路的各个模块的性能指标以达到最高的信噪比

目录 一、 理解关键性能指标及其冲突 二、 均衡策略与设计准则 1. 噪声最优分配&#xff08;级联公式的应用&#xff09; 2. 增益分布策略 3. 线性度规划与预算 4. 动态范围管理 三、 系统设计与优化流程 四、 一个简化的设计范例&#xff08;接收机&#xff09; 总结 …

作者头像 李华