尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:P5017 [NOIP2018 普及组] 摆渡车

题解:P5017 [NOIP2018 普及组] 摆渡车
📅 发布时间:2026/6/20 0:35:55

这道题乍一看,很多人(包括我)就会想到贪心。

但是我们仔细想一下,正着贪心(也就是摆渡车能开就开)这个是不行的。那倒着贪心呢(也就是让最后一个人不等待,然后一直往前推 \(m\) 时刻)?也不行,这里有一个反例。

4 5
1 1 1 5

正确输出

1

第二种贪心方式的输出

12

所以我们用到了 DP,状态设计起来还是比较简单的。

我们令 \(t\) 为上一次摆渡车开走的时间,摆渡车没有开走过 \(t\) 就等于 \(1\)。再令 \(f_i\) 表示在 \(i\) 时刻摆渡车开走了,\(t \sim i\) 时刻的同学的等待时间。

那么转移为 $$f_i \gets min_{t\le i-m}(f_i,f_t+[t+1]\sim i)$$。

AC code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 201000;
int n, m, t[N], dp[N], s1[N], s2[N], cnt[N];
int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++) {scanf("%d", &t[i]);t[i] += 1;}sort(t + 1, t + n + 1);for (int i = 1; i <= n; i++)if (t[i] - t[i - 1] >= 2 * m) {int c = t[i] - t[i - 1] - 2 * m;for (int j = i; j <= n; j++)t[j] -= c;}int T = t[n] + m;for (int i = 1; i <= n; i++)cnt[t[i]]++;for (int i = 1; i <= T; i++) {s1[i] = s1[i - 1] + cnt[i];s2[i] = s2[i - 1] + i * cnt[i];}int ans = 1 << 30;for (int i = 1; i <= T; i++) {dp[i] = i * s1[i] - s2[i];for (int j = i - m; j >= 1 && j >= i - 2 * m + 1; j--)dp[i] = min(dp[i], dp[j] + i * (s1[i] - s1[j]) - (s2[i] - s2[j]));if (i >= t[n])ans = min(ans, dp[i]);}printf("%d", ans);
}

相关新闻

  • 跨境电商客服系统:不同国家客户听到本地化语音
  • 【Linux命令大全】002.文件传输之lprm命令(实操篇)
  • 【赵渝强老师】国产金仓数据库的表空间

最新新闻

  • 天津猎头公司前十名及联系电话 - 榜单推荐
  • 主城九区随叫随到,奢二网上门收黄金包包不用重庆人来回跑 - 讯息早知道
  • 2026 合肥理工学校报名渠道汇总!报名地点、官方招生电话一文看懂 - cc江江
  • 实战演练:用科来抓包解析Telnet会话全过程
  • 2026毕业季寄大件行李哪个物流便宜?学生必看省钱攻略 - 快递物流资讯
  • 2026年积家官方售后服务体系全面焕新|官方维修新址全公布,最新服务热线同步公示 - 积家中国服务中心

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号