NOIP2018-摆渡车

这道题就是看加不加入, 加上一些优化
思路参考洛谷第一篇题解(sooke巨佬)的题解
代码如下:

#include <bits/stdc++.h>
const int maxn = 4000105;
int n, m, t, ti, ans = 0x7fffff, l = 1, r, cnt[maxn], sum[maxn], queu[maxn], dp[maxn];
class quickly {public:template <typename Type>inline Type max(Type x, Type y) {return x < y ? y : x;}template <typename Type>inline Type min(Type x, Type y) {return x < y ? x : y;}template <typename Type>inline Type abs(Type x, Type y) {return x < 0 ? -x : x;}template <typename Type>inline Type gcd(Type x, Type y) {return !y ? x : gcd(y, x % y);}
};template <typename Type>
inline void read(Type& x) {register int f = 1;x = 0;register char ch = getchar();while (ch < '0' || ch > '9') {f = ch == '-' ? -1 : 1;ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 3) + (x << 1) + (ch ^ 48);ch = getchar();}x = f == -1 ? -x : x;
}template <typename Type>
inline void write(Type x) {if (x < 0) {putchar('-');x = -x;}if (x > 9) {write(x / 10);}putchar(x % 10 + 48);
}inline double getSlope(int u, int v) {return (double)(dp[v] + sum[v] - dp[u] - sum[u]) / (cnt[u] == cnt[v] ? 1e-9 : cnt[v] - cnt[u]);
}signed main() {read(n), read(m);for (int i = 1; i <= n; i++) {read(ti);t = quickly().max(t, ti);cnt[ti]++;sum[ti] += ti;}for (int i = 1; i < t + m; i++) {cnt[i] += cnt[i - 1], sum[i] += sum[i - 1];}for (int i = 0; i < t + m; i++) {if (i - m >= 0) {while (l < r && getSlope(queu[r - 1], queu[r]) >= getSlope(queu[r], i - m)) {--r;}queu[++r] = i - m;}while (l < r && getSlope(queu[l], queu[l + 1]) <= i) {++l;}dp[i] = cnt[i] * i - sum[i];if (l <= r) {dp[i] = quickly().min(dp[i], dp[queu[l]] + (cnt[i] - cnt[queu[l]]) * i - (sum[i] - sum[queu[l]]));}}for (int i = t; i < t + m; i++) {ans = quickly().min(ans, dp[i]);}write(ans);return 0;
}
```
# 完美撒花

NOIP2018-摆渡车相关推荐

  1. [NOIP2018]摆渡车(c++)

    题目描述 有n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i位同学在第 ti 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送到人民大学.再回 ...

  2. [NOIp2018] 摆渡车

    普及组考斜率优化 考虑dpdpdp fif_ifi​表示在iii时刻发车的最小等待时间 那么我们可以得到转移方程 fi=min⁡0≤j≤i−m{fj+(cnti−cntj)i−(sumi−sumj)} ...

  3. 2018 NOIP 普及组

    文章目录 T1 标题统计 T1分析 T2 龙虎斗 T2分析 T3 摆渡车 T3分析 解法 I 解法 II T4 对称二叉树 T4分析 T1 标题统计 题目点击→计蒜客 [NOIP2018] 标题统计 ...

  4. P5017 NOIP2018 普及组 摆渡车

    P5017 NOIP2018 普及组 摆渡车 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 显然要把人按照到达时间排序.然后考虑 dp. 设 \(f(i)\) 表示前 \(i\) ...

  5. 摆渡车(noip2018 pj t3)

    摆渡车(题目和测试右转 洛谷P5017) 做法:dp+各种优化(剪枝) 这道题考场上看了一脸懵逼...第一眼看这 tm 不是个一维dp吗...结果按着这个朦胧的思路,删删改改约莫0.5h,终于过了小样 ...

  6. 【NOIP2018】摆渡车

    [题意] 1.第i个同学在第t[i]分钟到达车站 2.摆渡车一次可以装下无数人 3.两次发车的间隔时间m分钟 求所有等车时间和的最小值 [解题] 我们不妨认为时间是一条数轴,每名同学按照到达时刻分别对 ...

  7. NOIP2018普及组复赛——T3摆渡车

    题目描述 有 n n n名同学要乘坐摆渡车从人大附中前往人民大学,第 i i i 位同学在第 t i t_i

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

    题目传送门 题目描述 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i 位同学在第 ti 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送 ...

  9. NOIp2018普及组-摆渡车

    (作为一名已经离开了普及组的退役选手感到万分庆幸) 题目链接:https://www.luogu.org/problemnew/solution/P5017 1.感觉就是一个类似线性的以时间作为维度的 ...

  10. [NOIP2018 普及组] 摆渡车题解

    题目链接 题意 给出n名同学到达车站的时间,只有一辆摆渡车,来回需要mmm分钟,求将所有同学摆渡到终点,所有同学的最少等车时间之和. 抽象一下题意: 数轴:时间轴 点权值:此时刻等车的人数 区间右端点 ...

最新文章

  1. Vue-Cli3.0怎么使用预渲染怎么配置prerender-spa-plugin
  2. Angularjs 中select回显后重复选项的解决
  3. 微软技术透明中心落地北京,允许相关机构查看源代码
  4. vue项目将token存在(vuex)store和localstorage中
  5. float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...
  6. 支持向量机 - 从原理到算法的实现
  7. nginx php pathinfo,Nginx解决PATH_INFO新解决办法
  8. 小米回应“上海徐汇拿地”:不用于造车
  9. 基于django的视频点播网站开发-step12-后台订阅功能...
  10. 系统集成项目管理工程师笔记
  11. usb加密狗破解软件
  12. js清空浏览器cokie缓存_JS设置cookie,删除cookie
  13. MATLAB 棋类小游戏合集(围棋,六子棋,走四棋,九子棋,含禁手五子棋等等)
  14. 如何学习 COMSOL 多物理场仿真软件?必备教程
  15. ubuntu安装中文拼音输入法,装系统的第一步
  16. APP从苹果开发者A账号转移到B账号的流程
  17. 敏捷开发中的任务拆分法_在关键任务系统开发中使用敏捷的5个技巧
  18. 基于STM8的数字温度计设计
  19. 乱码解决(二)——文件转码
  20. java--获取当前时间

热门文章

  1. 海尔IDOL5怎么样,海尔JSQ30-16IDOL5-PU1和JSQ25-13IDOL5的区别
  2. 深度学习字体生成结果记录
  3. 一条放弃了计算机的咸鱼的求职之路
  4. 西门子S7200系列PLC数据采集和点表自动侦测获取
  5. 华为HCIE RS笔记-20RIP(Routing information Protocol)
  6. 学习总结4.1 Linux文件权限修改
  7. Random类Dome01 nextInt()方法
  8. Android 百度人脸照片对比,百度的人脸对比支持比对同一张照片中的两张脸吗?...
  9. 《14天动手学深度学习》——循环神经网络进阶
  10. 20190416 关于学历