[蓝桥杯 2024 国 Python B] 工厂
题号:NC308955
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

H 市是一座制造业十分发达的城市。在 H 市中,工厂可以生产 n 种不同的物品,部分物品都可以以特定的价格 a_i 在市场上售出而带来收益。生产方式分为两类,使用第一类生产方式每个工人可以在一天时间内生产若干件物品 y。使用第二类生产方式,每个工人可以在一天时间内使用若干件物品 x 生产若干件物品 y,其中 x \leq y,即只能将编号较小的物品加工成编号较大的物品。

小蓝作为 H 市的市长自然希望能够最大化收益,由于 H 市的人口非常多,你只需要帮她计算出平均一天内每个工人能够获得的最大收益即可。

输入描述:

输入的第一行包含两个正整数 n, m,用一个空格分隔,其中 n 表示物品种数,m 表示生产方式总数。

第二行包含 n 个正整数 a_i,相邻整数之间使用一个空格分隔,表示物品的售价,若 a_i = 0 则表示这种物品无法在市场上售出。

接下来 m 行,每行包含四个非负整数 x_i, y_i, k_i, w_i,相邻整数之间使用一个空格分隔,表示一个工人可以在一天时间内使用 k_i 件物品 x_i 生产 w_i 件物品 y_i。特殊地,如果 k_i = 0(此时 x_i 不一定为 0,请忽略 x_i 的值)则表示该种生产方式是第一类生产方式,不需要原材料。
1 \leq n, m \leq 3000000 \leq a_i \leq 10^61 \leq w_i \leq 100 \leq k_i \leq 101 \leq x_i \leq y_i \leq n。保证数据中至少存在一个 k_i = 0

输出描述:

输出一行包含一个实数,四舍五入保留正好两位小数,表示平均每个工人在一天时间内能够获得的最大收益。
示例1

输入

复制
3 3
1 0 2
1 1 0 6
1 2 5 10
2 3 6 10

输出

复制
9.52