首页 > [NOIP2018]摆渡车
头像 __故人__
发表于 2020-09-07 20:11:44
 题意 安排摆渡车出发的时间,使这些同学的等车时间之和最小。 分析  一 根据题意我们就有如下转移式子,令 $f_i$ 是以时间点 $i$ 为结尾的最小等车时间。那么  $$f_i = \min_{j\le i-m} \lbrace f_j+\sum_ 展开全文
头像 savage
发表于 2019-08-27 19:12:37
题目描述 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i 位同学在第 ti 分钟去 等车。只有一辆摆渡车在工作,但摆渡车容量可以视为无限大。摆渡车从人大附中出发、 把车上的同学送到人民大学、再回到人大附中(去接其他同学),这样往返一趟总共花费 m 分钟(同学上下 展开全文
头像 熠丶
发表于 2020-09-07 16:37:28
做法:记忆化搜索 思路: 1.小于等于当前时间点的人都要上车 2.当前时间没人就跳到下一个有人的时间点 3.考虑是不是要等待下一个人来再开车 #include <bits/stdc++.h> using namespace std; #define pb push_back #def 展开全文
头像 DeNeRATe
发表于 2020-09-07 21:05:31
前言 作为NOIP-J的T3,这道题在一定程度上是会有区分度的。。。比如说这道题就有一堆解法: 剪枝优化状态 斜率优化DP 的神级DP 某位大佬说的算法但我这里就主要讲一下斜率优化DP吧,相信大部分都是这种做法吧 分析 我们考虑枚举设DP[i]表示在时回到人大附中的最少总时间Pre[i]表示及之 展开全文
头像 又在摸鱼的大熊猫很勤奋努力
发表于 2020-09-07 21:45:24
摆渡车 题意 你可以操控一辆车的发车时间,你也知道跑一次往返的时间,你还知道每一个人到达车站的时间让你找到一种方案使得所有人的等待时间之和最少,求这个最小时间 分析 第一反应是把到达车站的人作为一个整体然后我们可以枚举最近的一次发车时间假设现在的时间是,最近的一次发车时间是那么从的等待时间可以表示为 展开全文
头像 QAQ天战QAQ
发表于 2020-01-12 22:46:32
include<stdio.h> include using namespace std; const int maxn=502,maxm=102;const int INF=0x7fffffff; int f[maxn][maxm];int Min[maxn]; int a[maxn] 展开全文
头像 sunrise__sunrise
发表于 2020-09-08 18:25:05
Solution 中文的题意说的比较清楚,说下膜拜的大佬做法,大佬题解传送门 我们需要让整体学生等候时间最短,那么就要遵循几个原则。首先我们对到来时刻升序排序,依次处理。我们暴力搜索下去需要两个函数参数,搭载的人员数量和当前汽车回到起点所在时刻1、如果回来之后没有一个学生在等车,直接跳转到下一个需要 展开全文
头像 Acapplella
发表于 2020-09-13 11:49:19
思路:1.小于等于当前时间点的人都要上车2.当前时间没人就跳到下一个有人的时间点3.考虑是不是要等待下一个人来再开车参考代码如下: //100pts 500 100 4e6 #include<cstdio> #include<algorithm> #define INF 2 展开全文
头像 jimmywang
发表于 2021-10-15 20:03:22
观察到ttt很小,于是考虑在时间轴上dpdpdp。 设c[i]c[i]c[i]为在iii时刻出发的人数。 设dp[i]dp[i]dp[i]是在iii时刻出发,前iii分钟等待时间最少的值。 所以 dp[i]=j=1i−mdp[j]+∑k=j+1i(i−k)∗c[k]dp[i]= \min_{j=1} 展开全文
头像 logic/
发表于 2022-07-18 09:51:54
#include<iostream> using namespace std; const int MAXT = 4000105; int t[MAXT],cnt[MAXT],sum[MAXT],dp[MAXT]; int main() { int n,m,last_one=0; 展开全文

等你来战

查看全部