本题是一道扁平化数组建模 + 区间累加的模拟统计题,核心在于下标映射和风控条件的整数化判断,不涉及复杂算法。
1. 数据布局与下标映射
warehouses 把「仓库 × 天 × 3 个字段」压平成一维数组。由于所有仓库天数相同,可先算出每个仓库的天数:
某物流企业在全国多个仓库开展仓储业务,需要对不同仓库、不同时间段的入库成本、出库收入和库存损耗进行综合统计分析,用于生成日报、周报和月报。
字段说明及取值范围如下:
| 字段 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| warehouseId | int | [0, 99] | 仓库编号 |
| numOfWarehouse | 仓库数量 | ||
| startDay | 统计开始天 | ||
| endDay | 统计结束天,startDay ≤ endDay | ||
| inCost | [0, 1000] | 入库成本(千元) | |
| outRevenue | [0, 2000] | 出库收入(千元) | |
| loss | [0, 100] | 库存损耗(千元),0表示无损耗 |
warehouses: int[] 扁平化数组 [w0d0in, w0d0out, w0d0loss, w0d1in, w0d1out, w0d1loss, ...],所有仓库数据都存在该数据中,先存储仓库0的数据,再存储仓库1的数据,所有仓库数据个数均相同
queries: int[][] [[warehouseId, startDay, endDay], ...]
numOfWarehouse: int 仓库个数
输入保证最多100个仓库,每个仓库最多100天数据,每天数据连续,中间无空缺
返回 int[][] 每个查询结果:[累计净利润, 累计损耗, 风控标记]
业务计算规则:
净利润 = 累计出库收入 - 累计入库成本
累计损耗 = Σ每日损耗
损耗率 = 累计损耗 / (累计入库成本 + 累计出库收入) × 100%,保留2位小数
风控规则:
当损耗率 > 5% 时,触发风控标记(返回1)
当损耗率 ≤ 5% 时,不触发风控(返回0)
输入
[3, 8, 1, 5, 12, 0, 2, 6, 0, 4, 10, 1][0, 0, 2]]1
输出
[[16,1,0]]
说明
数据解读:
计算过程:
| 指标 | 计算 | 结果 |
|---|---|---|
| 累计入库成本 | 3+5+2 | 10 |
| 累计出库收入 | 8+12+6 | 26 |
| 累计损耗 | 1+0+0 | 1 |
| 净利润 | 26-10 | 16 |
| 损耗率 | 1/(10+26)*100 = 2.78% | < 5%,不触发风控 |
输入
[10, 20, 5, 10, 20, 5, 10, 20, 5, 5, 15, 2, 5, 15, 2, 5, 15, 2][[0, 0, 2], [1, 0, 1]]2
输出
[[30,15,1],[20,4,1]]
说明
数据解读:
仓库0计算:
| 指标 | 计算 | 结果 |
|---|---|---|
| 累计净利润 | (20-10)*3 | 30 |
| 累计损耗 | 5*3 | 15 |
| 损耗率 | 15/(30+60)*100 = 16.67% | > 5%,触发风控 |
| 风控标识 | - | 1 |
仓库1计算(查询仓库1的0-1,共2天):
| 指标 | 计算 | 结果 |
|---|---|---|
| 累计净利润 | (15-5)*2 | 20 |
| 累计损耗 | 2*2 | 4 |
| 损耗率 | 4/(10+30)*100 = 10% | > 5%,触发风控 |
| 风控标识 | - | 1 |
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册