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

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

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

但是我们仔细想一下,正着贪心(也就是摆渡车能开就开)这个是不行的。那倒着贪心呢(也就是让最后一个人不等待,然后一直往前推 \(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);
}
http://www.jsqmd.com/news/181895/

相关文章:

  • 跨境电商客服系统:不同国家客户听到本地化语音
  • 从入门到精通:FastAPI处理复杂跨域预检请求的完整路径
  • 【Linux命令大全】002.文件传输之lprm命令(实操篇)
  • 停车场空位语音提示:驾驶员快速找到可用车位
  • 【赵渝强老师】国产金仓数据库的表空间
  • 日本动漫经典重现:蜡笔小新用AI说普通话
  • 【Linux命令大全】002.文件传输之lpr命令(实操篇)
  • 灵遁者:春华秋实年复年,青丝渐成雪满巅
  • 瑞士钟表匠工作室:精细操作伴随专注的低声细语
  • 题解:P2258 [NOIP2014 普及组] 子矩阵
  • 图书馆闭馆提醒:温柔语音取代刺耳铃声
  • 【Asyncio事件触发机制深度解析】:掌握高效异步编程的核心引擎
  • 题解:AT_abc389_c [ABC389C] Snake Queue
  • PyTorch显存占用太高?3个鲜为人知的Python技巧让你效率翻倍
  • DeepMimic: Example-Guided Deep Reinforcement Learning of PhysicsBased Character Skills
  • 文学作品角色演绎:小说中每个人物都有独特声线
  • 矿山安全监控系统:危险区域进入时触发语音警告
  • 军事指挥系统语音输出:保密前提下的高效信息传递
  • 编辑文章 - 题解:CF665D Simple Subset
  • 雾霾指数语音提醒:环保部门发布空气质量通知
  • 提升PostgreSQL编码效率的利器:pg-aiguide✨
  • 【从入门到精通】:NiceGUI输入校验的7种高级实现方式
  • PyWebIO上传下载功能隐藏用法大揭秘:99%新手不知道的2个核心参数
  • 让Claude更聪明,提升效率的秘笈——Agent Skills 开源项目介绍
  • 建筑工地安全广播:每日开工前自动播放注意事项
  • 家乡方言保存工程:用VoxCPM-1.5-TTS留住文化遗产
  • 题解:CF628C Bear and String Distance
  • 没闲着系列 2026 - 1.2 - ukyo-
  • 从零实现3D旋转与缩放,Python视角控制实战案例详解
  • 深度伪造语音防范:如何识别VoxCPM-1.5-TTS生成内容?