本题模拟能量管理系统的版本化记录与时间段比例加权查询,核心是:
QueryNetEnergy,其余按顺序赋予版本号 1,2,…;查询参数中的版本号 A 表示全量,否则只统计版本 ≤ 给定值的记录。设计一个能量管理系统,用于管理多种能源的生产、消耗。系统支持以下功能:
支持添加能源生产与消耗记录;
每条记录对应一个版本号(第 1 条为版本 1,依次递增);
查询指定版本号之前,指定时间段的净能量;
时间重叠按时间交集长度 / 时段总时长进行比例加权。
函数输入为字符串数组(长度不超过 1000),字符串组会以一条查询命令结尾,函数返回净能量结果。
输入均为合法数据,能量类型字段不做校验,生产量、消耗量均为 32 位整型数据。 全量查询 版本号输入 A。
所有时间戳以秒为单位,为 Unix 时间戳。
版本号从 1 开始递增。
生产记录(可以有多条):字符串以AddProductionRecord 开头 表示生产记录,共计 4 个参数,每个参数通过 , 分隔,参数 1 表示能量类型 (wind,solar,grid) ,参数 2 表示生产量,参数 3 表示生产起始时间,参数 4 表示生产终止时间。
消耗记录(可以有多条):字符串以 AddConsumptionRecord 开头 表示消耗记录,共计 3 个参数,每个参数通过 , 分隔,参数 1 表示消耗量,参数 2 表示消耗起始时间,参数 3 表示消耗终止时间。
查询命令(只有一条,且为最后一条):字符串以 QueryNetEnergy 表示查询净能量,共 3 个参数,3 个参数间通过 , 分隔,参数 1 表示查询某个版本内的消耗记录(32 位整型数据,如查询全量版本,则该字段为字符 A),参数 2 表示查询起始时间,参数 3 表示查询终止时间(查询时间段为闭区间,即包含起始和终止时间点)
净能量,32 位整型数据(四舍五入),取值范围:−2,147,483,648∼2,147,483,647。
输入
["AddProductionRecord,wind,500,1640000000,1640001000","AddConsumptionRecord,100,1640000000,1640000600","AddConsumptionRecord,200,1640000251,1640001251","QueryNetEnergy,3,1640000000,1640001000"]
输出
250
说明
版本 1: AddProductionRecord,wind,500,1640000000,1640001000
版本 2: AddConsumptionRecord,100,1640000000,1640000600
版本 3: AddConsumptionRecord,200,1640000251,1640001251
QueryNetEnergy,3,1640000000,1640001000
只取前 3 条记录,时间在 1640000000~1640001000 区间内的
版本 1 完全在查询时间内,生产量 500
版本 2 完全在查询时间内,消耗量 100
版本 3 时间部分重叠,消耗量为 200∗(1640001000−1640000251)/(1640001251−1640000251)=149.8
净能量为 500−100−149.8=250.2,四舍五入为 250
输入
["AddProductionRecord,wind,1000,1640000000,1640000500","QueryNetEnergy,1,1640001000,1640002000"]
输出
0
说明
版本 1: AddProductionRecord,wind,1000,1640000000,1640000500
QueryNetEnergy,1,1640001000,1640002000
只取前 1 条记录,时间在 1640001000~1640002000 区间内的
版本 1 不在查询时间内,查询版本 1 净能量为 0
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册