[NOIP2018PJ]摆渡车
[NOIP2018PJ]摆渡车
luogu
mdPJ组这么难,还好考的TG组
先按t排序
设f[i][j]表示前i个人,第i个人等j分钟的最小总等待时间
这里j是小于2m的
可以考虑最坏情况下,一个人到起点时车刚好出发,m分钟之后回来
然后车又在起点停了m分钟等别人,则这个人一共等了2m分钟
转移分三种情况讨论:
下一个人赶上这趟车,即t[i+1]<=t[i]+j,那么转移到f[i+1][t[i]+j-t[i+1]]
下一个人在这趟车回来之前到了,即t[i+1]<=t[i]+j+m,枚举车回来后等待时间k,转移到f[i+1][t[i]+j+m-t[i+1]+k]
下一个人在这趟车回来之后才到,即t[i+1]>t[i]+j+m,直接枚举等待时间k,转移到f[i+1][k]
#include<bits/stdc++.h>
using namespace std;
int re(){
int x=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*w;
}
int n,m,ans,t[505],f[505][205];
void Min(int&x,int y){x=min(x,y);}
int main(){
n=re(),m=re();
for(int i=1;i<=n;i++)t[i]=re();
sort(t+1,t+n+1);
memset(f,63,sizeof(f));ans=f[0][0];
for(int i=0;i<m*2;i++)f[1][i]=i;
for(int i=1;i<n;i++){
for(int j=0;j<m*2;j++){
if(f[i][j]==ans)continue;
if(t[i+1]<=t[i]+j)Min(f[i+1][t[i]+j-t[i+1]],f[i][j]+t[i]+j-t[i+1]);
if(t[i+1]>t[i]+j+m){
for(int k=0;k<m*2;k++)
Min(f[i+1][k],f[i][j]+k);
}
else{
for(int k=0;t[i]+j+m-t[i+1]+k<m*2;k++)
Min(f[i+1][t[i]+j+m-t[i+1]+k],f[i][j]+t[i]+j+m-t[i+1]+k);
}
}
}
for(int i=0;i<m*2;i++)Min(ans,f[n][i]);
printf("%d\n",ans);
return 0;
}
[NOIP2018PJ]摆渡车的更多相关文章
- 【LG5017】[NOIP2018pj]摆渡车
[LG5017][NOIP2018pj]摆渡车 题面 洛谷 题解 震惊!普及组竟然考斜率优化??? 当然有其他的方法 首先我们转化一下模型 此题可以变为: 在一根时间轴上有一些点,每个时间点\(i\) ...
- [NOIP2018]摆渡车
Description: 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i位同学在第 t 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送 ...
- 【NOIP2018pj】题解
[NOIP2018pj]题解 \(T1\) 题面 洛谷 题解 好像并没有什么好说的... #include <iostream> #include <cstdio> #incl ...
- 【LG5018】[NOIP2018pj]对称的二叉树
[LG5018][NOIP2018pj]对称的二叉树 题面 洛谷 题解 看到这一题全都是用\(O(nlogn)\)的算法过的 考场上写\(O(n)\)算法的我很不开心 然后就发了此篇题解... 首先我 ...
- [NOIP2018PJ]对称二叉树
[NOIP2018PJ]对称二叉树 这个题正常人看到题面难道不是哈希? 乱写了个树哈希... #include<bits/stdc++.h> using namespace std; co ...
- Luogu 5017 NOIP2018普及组T3 摆渡车 (斜率优化 + 必要的转移进行剪枝)
题意: 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i 位同学在第 ti 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送到人民大学. ...
- 『摆渡车 斜率优化dp及总结』
摆渡车的题解我已经写过一遍了,在这里,这次主要从斜率优化的角度讲一下摆渡车,并总结一下斜率优化会出现的一些奇奇怪怪的错误. 摆渡车 Description 有 n 名同学要乘坐摆渡车从人大附中前往人民 ...
- [Noip 2018][标题统计 龙湖斗 摆渡车 对称二叉树]普及组题解
啊喂,都已经9102年了,你还在想去年? 这里是一个Noip2018年PJ第二题打爆的OIer,错失省一 但经过了一年,我学到了很多,也有了很多朋友,水平也提高了很多,现在回看当时: 今年的Noip ...
- P5017 [NOIP2018 普及组] 摆渡车
P5017 [NOIP2018 普及组] 摆渡车 题目 P5017 思路 将实际问题抽象后,不难发现这是一个 区间 \(DP\) 我们不妨认为时间是一条数轴,每名同学按照到达时刻分别对应数轴上可能重合 ...
随机推荐
- Parallel小记
List<Temp> tList = new List<Temp>(); ; i < ; i++) { tList.Add(new Temp() { id = i, na ...
- ajaxform 提交,返回JSON时,IE提示下载的问题解决
在使用AJAXform提交表单时,返回的数据格式为JSON,头文件是application/json 时,在 火狐.ie9和谷歌下都能正常解析,在ie7下会提示下载. 解决方法:指定返回页的头文件为& ...
- 通过 P3P规范让IE跨域接受第三方cookie session
所谓第三方 cookie,就是说你访问网页 A,却接收到域名 B 的 cookie 设定指令.这可能是由于网页 A 请求或链接了 B 的网页,比如上面提到的 iframe 以及 jsonp. 我查到了 ...
- unity, 慎用DontDestroyOnLoad
如果想让一个节点切换场景时不销毁,可以为它添加如下脚本: using UnityEngine;using System.Collections; public class dontDestroyOnL ...
- C语言中fgetc函数返回值为什么是int?
学习C语言的,文件操作,大都会用到它. 它的函数原型: 这个函数的返回值,是返回读取的一个字节.如果读到文件末尾返回EOF.EOF其实就是一个宏#define EOF (-1)表示-1.既然返回的是一 ...
- android studio - 隐藏编辑器上面的导航条
菜单栏-“View”-"Navigation Bar"
- Creating Dialogbased Windows Application (1) / 创建基于对话框的Windows应用程序(一)新建窗体 / VC++, Windows
创建基于对话框的Windows应用程序(一) —— 新建窗体 1.新建一个Visual C++的Empty Project. 2.在Solution Explorer中右键Add New Item, ...
- iOS 学习笔记一【屏幕截图,并显示当前View】
// 直接上代码: // // ViewController.h // 屏幕截图测试 // // Created by 博爱之家 on 15/11/11. // Copyright © 2015年 博 ...
- DJI SDK iOS 开发之二:搭建主要的开发环境
本文想介绍搭建主要的DJI SDK iOS下的开发环境,只是DJI官方已经给出了非常具体的执行其demo的教程.网址例如以下: https://dev.dji.com/cn/guide 我这里总结一下 ...
- OC 字符串出来
//1.获取字符串的长度 NSString * str = @"abcd"; NSUInteger length = [str length]; //str.length; NSL ...