NOIP2018-摆渡车
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-摆渡车相关推荐
- [NOIP2018]摆渡车(c++)
题目描述 有n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i位同学在第 ti 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送到人民大学.再回 ...
- [NOIp2018] 摆渡车
普及组考斜率优化 考虑dpdpdp fif_ifi表示在iii时刻发车的最小等待时间 那么我们可以得到转移方程 fi=min0≤j≤i−m{fj+(cnti−cntj)i−(sumi−sumj)} ...
- 2018 NOIP 普及组
文章目录 T1 标题统计 T1分析 T2 龙虎斗 T2分析 T3 摆渡车 T3分析 解法 I 解法 II T4 对称二叉树 T4分析 T1 标题统计 题目点击→计蒜客 [NOIP2018] 标题统计 ...
- P5017 NOIP2018 普及组 摆渡车
P5017 NOIP2018 普及组 摆渡车 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 显然要把人按照到达时间排序.然后考虑 dp. 设 \(f(i)\) 表示前 \(i\) ...
- 摆渡车(noip2018 pj t3)
摆渡车(题目和测试右转 洛谷P5017) 做法:dp+各种优化(剪枝) 这道题考场上看了一脸懵逼...第一眼看这 tm 不是个一维dp吗...结果按着这个朦胧的思路,删删改改约莫0.5h,终于过了小样 ...
- 【NOIP2018】摆渡车
[题意] 1.第i个同学在第t[i]分钟到达车站 2.摆渡车一次可以装下无数人 3.两次发车的间隔时间m分钟 求所有等车时间和的最小值 [解题] 我们不妨认为时间是一条数轴,每名同学按照到达时刻分别对 ...
- NOIP2018普及组复赛——T3摆渡车
题目描述 有 n n n名同学要乘坐摆渡车从人大附中前往人民大学,第 i i i 位同学在第 t i t_i
- P5017 [NOIP2018 普及组] 摆渡车 题解
题目传送门 题目描述 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i 位同学在第 ti 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送 ...
- NOIp2018普及组-摆渡车
(作为一名已经离开了普及组的退役选手感到万分庆幸) 题目链接:https://www.luogu.org/problemnew/solution/P5017 1.感觉就是一个类似线性的以时间作为维度的 ...
- [NOIP2018 普及组] 摆渡车题解
题目链接 题意 给出n名同学到达车站的时间,只有一辆摆渡车,来回需要mmm分钟,求将所有同学摆渡到终点,所有同学的最少等车时间之和. 抽象一下题意: 数轴:时间轴 点权值:此时刻等车的人数 区间右端点 ...
最新文章
- Vue-Cli3.0怎么使用预渲染怎么配置prerender-spa-plugin
- Angularjs 中select回显后重复选项的解决
- 微软技术透明中心落地北京,允许相关机构查看源代码
- vue项目将token存在(vuex)store和localstorage中
- float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...
- 支持向量机 - 从原理到算法的实现
- nginx php pathinfo,Nginx解决PATH_INFO新解决办法
- 小米回应“上海徐汇拿地”:不用于造车
- 基于django的视频点播网站开发-step12-后台订阅功能...
- 系统集成项目管理工程师笔记
- usb加密狗破解软件
- js清空浏览器cokie缓存_JS设置cookie,删除cookie
- MATLAB 棋类小游戏合集(围棋,六子棋,走四棋,九子棋,含禁手五子棋等等)
- 如何学习 COMSOL 多物理场仿真软件?必备教程
- ubuntu安装中文拼音输入法,装系统的第一步
- APP从苹果开发者A账号转移到B账号的流程
- 敏捷开发中的任务拆分法_在关键任务系统开发中使用敏捷的5个技巧
- 基于STM8的数字温度计设计
- 乱码解决(二)——文件转码
- java--获取当前时间
热门文章
- 海尔IDOL5怎么样,海尔JSQ30-16IDOL5-PU1和JSQ25-13IDOL5的区别
- 深度学习字体生成结果记录
- 一条放弃了计算机的咸鱼的求职之路
- 西门子S7200系列PLC数据采集和点表自动侦测获取
- 华为HCIE RS笔记-20RIP(Routing information Protocol)
- 学习总结4.1 Linux文件权限修改
- Random类Dome01 nextInt()方法
- Android 百度人脸照片对比,百度的人脸对比支持比对同一张照片中的两张脸吗?...
- 《14天动手学深度学习》——循环神经网络进阶
- 20190416 关于学历