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

春秋招笔试题总结

1.小红的花圃抬高方案

核心思路

对于给定的目标高度h,需要计算:

  1. 总土量 = sum(max(0, h - height[i]))

  2. 需要的车数 = ceil(总土量 / C)

  3. 总成本 = 总土量 * U + 车数 * F

  4. 判断成本是否 ≤ B

然后用二分查找找到最大可行高度。

代码实现

import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 // 读取输入 long B = in.nextLong(); // 预算 long C = in.nextLong(); // 每车容量 long F = in.nextLong(); // 每车运输费 long U = in.nextLong(); // 单位填埋费 int n = in.nextInt(); // 花圃数 long[] heights = new long[n]; long minHeight = Long.MAX_VALUE; long maxHeight = Long.MIN_VALUE; for (int i = 0; i < n; i++) { heights[i] = in.nextLong(); minHeight = Math.min(minHeight, heights[i]); maxHeight = Math.max(maxHeight, heights[i]); } // 二分查找:下界是最低高度,上界可以设置得足够大 // 最坏情况:把最低的抬高到 maxHeight + B/U(但实际受预算限制) long left = minHeight; long right = maxHeight + 1000000000L; // 设置一个足够大的上界 long ans = minHeight; while (left <= right) { long mid = left + (right - left) / 2; if (check(mid, heights, B, C, F, U)) { ans = mid; left = mid + 1; // 尝试更高的高度 } else { right = mid - 1; // 降低高度 } } System.out.println(ans); } // 检查是否能将所有花圃抬高到目标高度 private static boolean check(long target, long[] heights, long B, long C, long F, long U) { long totalSoil = 0; // 计算需要的总土量 for (long h : heights) { if (h < target) { totalSoil += target - h; } } // 如果不需要土,成本为0 if (totalSoil == 0) { return true; } // 计算需要的车数:向上取整 long trucks = (totalSoil + C - 1) / C; // 计算总成本 long cost = totalSoil * U + trucks * F; return cost <= B; } }

代码说明

  1. 输入读取:按照题目顺序读取 B, C, F, U, n 和 n 个高度

  2. 二分查找

    • left设为最低高度(保证至少能达到当前最低高度)

    • right设为一个足够大的值

    • 每次检查 mid 是否可行

  3. 检查函数 check

    • 计算所有花圃抬高到 target 所需的总土量

    • 计算需要的车数(向上取整)

    • 计算总成本并判断是否在预算内

  4. 输出答案:二分结束后输出最大的可行高度

注意事项

  • 使用long类型避免溢出(B 最大 10^11,计算过程中可能超过 int 范围)

  • (totalSoil + C - 1) / C是整数向上取整的经典写法

  • 二分上界设置要足够大,考虑到最多可能抬高到初始最高高度 + 预算/单位填埋费

http://www.jsqmd.com/news/1384928/

相关文章:

  • 网盘下载终极提速指南:告别限速,一键获取真实直链
  • 0422-Box-实现推箱子游戏
  • 同城GEO:本地生意如何被AI看见并推荐
  • Gemini大模型深度集成macOS:自然语言驱动开发与系统自动化实践
  • 2026年潍坊做智慧燃气安全监管平台的公司有哪些?
  • WebSocket技术转型:从HTTP轮询到实时通信的架构演进
  • 揭秘宿迁城乡建设监督网站:百姓身边的透明窗与便民通
  • SMUDebugTool终极指南:如何免费调试AMD Ryzen处理器硬件参数
  • MetaPost (mpost) 安装配置与绘图实战:从零搭建矢量绘图环境
  • Python实现FlashAlgo:嵌入式Flash编程算法原理与工程实践
  • PvZWidescreen 宽屏补丁完整指南:把《植物大战僵尸》的黑边变成你的新战场
  • GitHub 完全指南:从入门到精通,开发者必备的代码托管平台
  • 3大理由告诉你为什么MelonLoader是Unity游戏模组加载的最佳选择
  • 0425-Box-新增地图模块
  • 江西省九江市诚信可靠服务好的合同纠纷律师怎么联系?洪亮亮经验丰富、专业靠谱 - 专业优选推荐榜
  • Galgame翻译工具YUKI实测:从下载到多引擎对照,15分钟跑通全流程
  • 如何自学网络安全
  • 降重降AIGC率工具实测与推荐
  • 两阶段鲁棒优化与CCG算法:应对不确定性的决策框架与MATLAB实现
  • 2026专业空净选购评测|6大品牌硬核对比,避坑六大准则,无滤网成主流趋势 - 互联网科技品牌测评
  • 2026年济宁做智慧燃气安全监管平台的公司有哪些?
  • 终极PDF对比神器diff-pdf:5分钟快速上手,告别手动核对烦恼!
  • NHSE动物森友会存档编辑器:5分钟掌握终极岛屿改造神器
  • 萍乡本地防水维修科普:漏水原因、施工方案与选择建议 - 筑宅安
  • 从代码补全到多智能体协作:AI编程的演进与CrewAI实战
  • 江苏宽带隐藏套餐揭秘:日均8毛背后的真实价值与办理全攻略
  • 3步掌握MelonLoader:Unity游戏模组加载器终极指南
  • 快可美纹理天缝剂 - 甄选测评官
  • DeepSeek-V4-Pro 正式版深夜突袭:Agent 评测暴涨 50 分,一套代码通吃 OpenAI 与 Anthropic 双生态
  • 如何让SQL格式化一键完成?SQL Beautify VSCode插件上手全攻略