1 条题解
-
0
解题思路
定义数据结构来存储摄入物质的信息,包括物质类型(巧克力或咖啡)、摄入时间、摄入数量。对于每个查询时间,遍历已记录的摄入信息,根据摄入时间和查询时间的关系,使用相应公式(巧克力:;咖啡:)计算该物质对亢奋程度的贡献。将所有物质的贡献累加,若结果为负则取 0,最终结果与 1 比较,取较大值作为亢奋程度。
代码
#include <iostream> #include <vector> #include <algorithm> #include <iomanip> #include <string> #include <cmath> #include <sstream> using namespace std; // 定义结构体存储摄入物质信息 struct Substance { string type; int time; double quantity; }; int main() { vector<Substance> substances; vector<int> queryTimes; string line; while (getline(cin, line)) { if (line.substr(0, 5) == "Query") { int queryTime; istringstream iss(line); string queryStr; iss >> queryStr >> queryTime; queryTimes.push_back(queryTime); } else { Substance substance; istringstream iss(line); iss >> substance.type >> substance.time >> substance.quantity; substances.push_back(substance); } } // 对查询时间排序 sort(queryTimes.begin(), queryTimes.end()); for (int queryTime : queryTimes) { double hyperactivityLevel = 0; for (const Substance& substance : substances) { double contribution = 0; int elapsedTime = queryTime - substance.time; if (elapsedTime >= 0) { if (substance.type == "Chocolate") { contribution = 8 * substance.quantity - elapsedTime / 12.0; } else if (substance.type == "Coffee") { contribution = 2 * substance.quantity - pow(elapsedTime, 2) / 79.0; } // 确保 contribution 不为负 contribution = max(contribution, 0.0); } hyperactivityLevel += contribution; } // 确保 hyperactivityLevel 不小于 1 hyperactivityLevel = max(hyperactivityLevel, 1.0); cout << queryTime << " " << fixed << setprecision(1) << hyperactivityLevel << endl; } return 0; }
- 1
信息
- ID
- 1511
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者