当前位置: 首页 > news >正文

第41次ccfcsp机器人项目管理

题目小 P 计划招募 n 个机器人完成一个项目每个机器人负责其中的一项任务编号从 1 到 n任务之间互不干扰。如果完成任务 i 的耗时为 ti​则该项目总耗时为 t1t2⋯tn。作为项目管理者小 P 可以用有限的预算为机器人们购买咖啡加油。其中负责任务 i 的机器人最多可以喝 ai 杯咖啡从而将该任务耗时缩短 bi​最终耗时即为 ti−bi​。根据任务的特性和机器人的偏好n 项任务可分为“灵活型”和“普通型”两类。灵活型如果任务 i 是灵活型则可以提供给该任务 [0,ai​] 范围内的任意实数杯咖啡从而将其加速相应比例。若给任务 i 提供 ki​⋅ai​ 杯咖啡则该任务对应耗时 ti​−ki​⋅bi​ (0≤ki​≤1)。普通型只能提供给任务 0 或 ai​ 杯咖啡。换言之只有将耗时缩短 bi 和不加速两种选择而不能提供半杯咖啡。已知小 P 可以为机器人们提供最多 m 杯咖啡试计算完成整个项目的最短时间。输入格式从标准输入读入数据。输入的第一行包含空格分隔的两个正整数 n 和 m分别表示任务数量和咖啡数量。接下来 n 行每行包含空格分隔的四个整数 oi,ti,ai,bi​表示一个任务。其中 oi∈{0,1} 表示任务类别oi​0 表示灵活型、oi​1 表示普通型其余变量含义如上所述输入数据保证 ti​bi​即缩短后的耗时仍大于零。输出格式输出到标准输出。输出一个实数表示完成整个项目的最短时间。这个代码用的贪心逻辑完全没有用二分这只是我想出来的一个解法但是可能有其他没有考虑全面的地方如果用问题可以提出。#include bits/stdc.h using namespace std; // 定义全局数组分别存储任务类型(o)、原始耗时(t)、最多分配咖啡数(a)、最多减少时长(b) int o[1000]{0}, t[1000]{0}, a[1000]{0}, b[1000]{0}, ans0; int main(){ int n, m; // 输入任务总数 n 和 咖啡总数 m cin n m; // 定义索引数组 g用于后续排序记录任务的下标 int g[n]{0}; // e 数组存储每个任务的“性价比”每杯咖啡能减少的时间sum 记录所有任务的原始总耗时 double e[1000]{0}, dp[1000]{0}, sum0, ans0; // 1. 读取输入并预处理 for(int i1; in; i){ // 按照题目要求输入类型、时间、倍数、减少时间 cin o[i] t[i] a[i] b[i]; // 计算性价比总减少时长 / 总杯数 e[i] 1.000 * b[i] / a[i]; // 累加原始总耗时 sum sum t[i]; } // 初始化索引数组g[i] 存储任务的原始下标 i for(int i1; in; i){ g[i] i; } // 2. 贪心核心按性价比从高到低对任务下标进行排序 sort(g1, gn1, [](int f, int h){ return e[f] e[h]; // 性价比高的任务排在前面优先分配咖啡 }); // 3. 遍历排序后的任务依次分配咖啡 for(int i1; in; i){ // 如果是固定型任务(o1)且剩下的咖啡足够满足它的最大需求 if(o[g[i]] 1 a[g[i]] m){ ans ans b[g[i]]; // 直接加上它能减少的最大时长 m m - a[g[i]]; // 扣除消耗的咖啡 } // 如果是灵活型任务(o0)且手里还有剩余咖啡 else if(o[g[i]] 0 m 0){ // 情况A剩下的咖啡足够把这个灵活型任务喝满 if(m a[g[i]]) { ans ans b[g[i]]; // 加上最大减少时长 m m - a[g[i]]; // 扣除消耗的咖啡 } // 情况B剩下的咖啡不够喝满只能全部给它此时可以喝小数杯 else { // 减少的时长 剩余咖啡数 * 每杯的性价比 ans ans m * e[g[i]]; m 0; // 咖啡全部用完 } } } // 4. 输出最终结果原始总耗时 - 通过喝咖啡减少的总时长 cout sum - ans; return 0; }
http://www.gsyq.cn/news/1407493.html

相关文章:

  • 2026年威海连锁海鲜餐馆推荐:5家正规门店深度测评,首选海滨小院 - 资讯纵览
  • 模型检验DAAC算法:高效检测所有反例,破解系统验证难题
  • 5款3D轻量化工具一键帮你解决卡顿问题
  • 《ZLToolKit源码学习笔记》(1)VS2019编译实战:从CMake配置到调试运行
  • Next.js集成Replicate AI:异步任务队列架构与生产级实践
  • 【Android】语燕输入法-无广纯净-输入快人一步-轻量纯净的高效输入之选
  • 基于时间序列深度学习的驾驶员认知分心检测:从多模态数据到嵌入式部署
  • 求职必备:手把手教你用学信网与学位网完成学历学位在线核验
  • Docker镜像构建与发布实战:从多阶段构建到生产部署
  • 20260527
  • ARF-LGN:基于非对称图卷积与注意力机制的社交推荐模型解析
  • 解锁AMD锐龙隐藏性能:SMUDebugTool深度调优秘籍
  • 5分钟搞定!Switch手柄在PC上玩转所有游戏的终极指南
  • 告别电量焦虑:给你的STM32项目加个‘油表’,HAL库ADC读取与电压换算详解
  • 告别格式焦虑!Zotero批量导出参考文献的终极指南
  • Dropbox创始人卸任CEO投身AI创业,内部高管接棒引领云存储转型
  • 一键获取国家中小学智慧教育平台电子课本:tchMaterial-parser让教材下载变得简单高效
  • 如何简单快速解决TranslucentTB安装失败0x80073D05错误:完整指南
  • 2026实测:专业降AIGC网站选这款就对了3秒改写无痕迹 - 降AI小能手
  • 2026年大连音响维修推荐榜:沙河口音响故障/杂音/噪音/短路维修,哈曼顿音响专业维保优选 - 品牌企业推荐师(官方)
  • 3分钟解锁iPhone应用自由:TrollInstallerX终极安装指南
  • 脑机接口技术:从神经信号解码到临床应用的挑战与突破
  • ALDRED协议:水下异步传感器网络如何实现低延迟与高能效通信
  • 2026年杭州临平装修公司哪家好?权威排名榜单为你揭晓! - 资讯纵览
  • 别再死记硬背了!用Python+ChatGPT帮你搞定《人工智能导论》课后习题
  • FPGA上G-AETCAM架构:门级实现TCAM,面积优化25倍
  • 嵌入式视觉系统内存优化:梯度导向有损压缩技术解析
  • 冰雪传奇点卡版官网下载_公平三职业打宝自由交易复古传奇手游
  • 2026现场签到vs门禁服务:口碑好的体验差异在哪? - GrowthUME
  • 基于互耦与功率检测的MIMO天线阵列自校准技术详解