P1070晨汐散余香Ⅱscent

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签贪心 · 优先队列 · 离线算法

【题目背景】

晨汐港的第一批香料已经完成交易,Gioush 大队也换得了一部分出海所需的补给。就在船队准备离港时,港口商会又送来一批数量更多、失香时间各不相同的香料,tfbz 决定在剩余的日子里继续交易,补足远航仍然欠缺的金币。

【题目描述】

晨汐港接下来共有若干个可供交易的日子。Gioush 大队带来了 nn 种香料,第 ii 种香料共有 cic_i 个单位,其中每个单位能够换得 aia_i 枚金币。第一次售出第 ii 种香料时,还会额外获得 sis_i 枚金币,这笔额外收益称为这种香料的初售赏金。无论之后又售出多少个单位,都不会再次获得同一种香料的初售赏金

对于第 ii 种香料,若 xi>0x_i>0,则在交易开始前将它的 cic_i 个单位依次分成若干批。除最后一批外,每批都恰好包含 xix_i 个单位,最后一批包含的单位不超过 xix_i 个。第一批会在第 11 天结束时失去香气,第二批会在第 22 天结束时失去香气,其余各批依此类推。每个单位所属的批次在交易开始前便已经确定,不会因为其他单位被售出而改变。在某一天结束时失去香气的单位,仍然可以在这一天完成交易。若 xi=0x_i=0,则这种香料的所有单位都不会失去香气。

晨汐港每天至多允许 Gioush 大队交易 mm 个单位的香料。同一天内交易的香料种类可以相同,也可以不同。一份香料一旦被卖出便不能再次交易,在失去香气前没有卖出的香料也不能带来任何收益。

对于一次询问,tfbz 可以在第 11 天至第 pjp_j 天内安排交易。把选出的香料分别安排到一个不晚于其失香时间的交易日,并保证同一天至多交易 mm 个单位,称为一个交易方案。若同一种香料至少有一个单位被卖出,那么这种香料的初售赏金会在总收益中计算一次。

tfbz 一共准备了 qq 次询问。每次询问都相互独立,所有香料都会恢复到交易开始前的完整库存,失香时间也会重新从第 11 天开始计算。特别地,当 pj=0p_j=0 时,本次询问不会进行交易。

对于每次询问,请你求出所有合法的交易方案中,Gioush 大队最多能够获得多少枚金币。

【输入格式】

从文件 scent.in\textbf{\textit{scent.in}} 中读入数据。

本题包含多组测试数据。

输入的第一行包含一个非负整数 cc 与一个正整数 TT,分别表示测试点编号与测试数据的组数。c=0c=0 表示该测试点为样例。

对于每组测试数据:

第一行包含三个正整数 n,m,qn,m,q,分别表示香料种类数、每天能够售出的单位数上限与询问数量。

接下来 nn 行,每行包含四个整数 ai,si,ci,xia_i,s_i,c_i,x_i,依次表示第 ii 种香料的基础收益、初售赏金、初始库存与每天失去香气的单位数。

接下来 qq 行,每行包含一个非负整数 pjp_j,表示一次询问的交易天数。

【输出格式】

输出到文件 scent.out\textbf{\textit{scent.out}} 中。

对于每组测试数据输出 qq 行,第 jj 行一个整数,表示第 jj 次询问中所有合法的交易方案能够获得的最大金币数。

【样例 1 输入】

0 22 3 23 3 3 32 5 8 3131 2 34 6 3 0012

【样例 1 输出】

162701418

【说明/提示】

【样例 1 解释】

在第一组测试数据中,当交易持续 33 天时,可以在第 11 天卖出第一种香料的全部三个单位,并在之后两天卖出第二种香料的五个单位,共获得 3×3+3+5×2+5=273\times3+3+5\times2+5=27 枚金币。当交易只持续 11 天时,最优收益为 1616 枚金币。

在第二组测试数据中,交易持续 0,1,20,1,2 天时的最优收益依次为 0,14,180,14,18 枚金币。可以证明,不存在收益更高的交易方案

【样例 2】

见选手目录下的 scent/scent2.in\textbf{\textit{scent/scent2.in}}scent/scent2.ans\textbf{\textit{scent/scent2.ans}}

该组样例符合测试点 141\sim 4 的数据范围。

【样例 3】

见选手目录下的 scent/scent3.in\textbf{\textit{scent/scent3.in}}scent/scent3.ans\textbf{\textit{scent/scent3.ans}}

该组样例符合测试点 585\sim 8 的数据范围。

【样例 4】

见选手目录下的 scent/scent4.in\textbf{\textit{scent/scent4.in}}scent/scent4.ans\textbf{\textit{scent/scent4.ans}}

该组样例符合测试点 9129\sim 12 的数据范围。

【样例 5】

见选手目录下的 scent/scent5.in\textbf{\textit{scent/scent5.in}}scent/scent5.ans\textbf{\textit{scent/scent5.ans}}

该组样例符合测试点 131513\sim 15 的数据范围。

【样例 6】

见选手目录下的 scent/scent6.in\textbf{\textit{scent/scent6.in}}scent/scent6.ans\textbf{\textit{scent/scent6.ans}}

该组样例符合测试点 161916\sim 19 的数据范围。

【样例 7】

见选手目录下的 scent/scent7.in\textbf{\textit{scent/scent7.in}}scent/scent7.ans\textbf{\textit{scent/scent7.ans}}

该组样例符合测试点 202520\sim 25 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证 1T101\leq T\leq101n,q1051\leq n,q\leq10^5,单个测试点内 n,q105\sum n,\sum q\leq10^51m101\leq m\leq100pj1050\leq p_j\leq10^50<ai,ci1090<a_i,c_i\leq10^90si,xi1090\leq s_i,x_i\leq10^9。同一组测试数据中的 pjp_j 互不相同。

表中的 ci\sum c_i 指一个测试点内所有测试数据的库存数量之和。

测试点编号n,q,maxpjn,q,\max p_jci\sum c_i特殊性质
141\sim 48\leq 820\leq 20
585\sim 8300\leq 3003×103\leq 3\times 10^3
9129\sim 12105\leq 10^52×105\leq 2\times 10^5
131513\sim 15300\leq 3003×1012\leq 3\times 10^{12}
161916\sim 19105\leq 10^51014\leq 10^{14}
202520\sim 25105\leq 10^51014\leq 10^{14}

特殊性质:保证所有 xi=0x_i=0

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解