[noip2011]观光公交

java实现的图的最短路径,常见的排序算法实现 利用java实现的排序算法,如冒泡排序,快速排序,插入排序,选择排序,堆排序,图的最短路径Dijkstra算法,项目是idea构建的demo 立即下载

632. [NOIP2011] 观光公交

★★★   输入文件:bus.in   输出文件:bus.out   简单对比
时间限制:1 s   内存限制:128 MB

【问题描述】

风景迷人的小城Y 市,拥有n 个美丽的景点。由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0 分钟出现在1号景点,随后依次前往2、3、4……n 号景点。从第i 号景点开到第i+1 号景点需要Di 分钟。
任意时刻,公交车只能往前开,或在景点处等待。
设共有m 个游客,每位游客需要乘车1 次从一个景点到达另一个景点,第i 位游客在Ti 分钟来到景点Ai,希望乘车前往景点Bi(Ai<bi)。为了使所有乘客都能顺利到达目的地,公交车在每站都必须等待需要从该景点出发的所有乘客都上车后才能出发开往下一景点。
假设乘客上下车不需要时间。
一个乘客的旅行时间,等于他到达目的地的时刻减去他来到出发地的时刻。因为只有一辆观光车,有时候还要停下来等其他乘客,乘客们纷纷抱怨旅行时间太长了。于是聪明的司机ZZ 给公交车安装了k 个氮气加速器,每使用一个加速器,可以使其中一个Di 减1。对于同一个Di 可以重复使用加速器,但是必须保证使用后Di 大于等于0。
那么ZZ 该如何安排使用加速器,才能使所有乘客的旅行时间总和最小?

【输入】

输入文件名为bus.in。
第1 行是3 个整数n, m, k,每两个整数之间用一个空格隔开。分别表示景点数、乘客数和氮气加速器个数。
第2 行是n-1 个整数,每两个整数之间用一个空格隔开,第i 个数表示从第i 个景点开往第i+1 个景点所需要的时间,即Di。
第3 行至m+2 行每行3 个整数Ti, Ai, Bi,每两个整数之间用一个空格隔开。第i+2 行表示第i 位乘客来到出发景点的时刻,出发的景点编号和到达的景点编号。

【输出】

输出文件名为bus.out。共一行,包含一个整数,表示最小的总旅行时间。

【输入输出样例】

bus.inbus.out
3 3 2
1 4
0 1 3
1 1 2
5 2 3
10




【输入输出样例说明】

对D2 使用2 个加速器,从2 号景点到3 号景点时间变为2 分钟。
公交车在第1 分钟从1 号景点出发,第2 分钟到达2 号景点,第5 分钟从2 号景点出发,第7 分钟到达3 号景点。
第1 个旅客旅行时间 7-0 = 7 分钟。
第2 个旅客旅行时间 2-1 = 1 分钟。
第3 个旅客旅行时间 7-5 = 2 分钟。
总时间 7+1+2 = 10 分钟。

【数据范围】

对于10%的数据,k=0;
对于20%的数据,0<=k<=1;
对于40%的数据,2 ≤ n ≤ 50,1 ≤ m≤ 1,000,0 ≤ k ≤ 20,0 ≤ Di ≤ 10,0 ≤ Ti ≤ 500;
对于60%的数据,1 ≤ n ≤ 100,1 ≤ m≤ 1,000,0 ≤ k ≤ 100,0 ≤ Di ≤ 100,0 ≤ Ti ≤ 10,000;
对于100%的数据,1 ≤ n ≤ 1,000,1 ≤ m ≤ 10,000,0 ≤ k ≤ 100,000,0 ≤ Di ≤ 100,0 ≤ Ti ≤ 100,000。
题解:这是一道比较麻烦的贪心。大体的思路是这样的:我们先建立两个数组car []和man[],car [i]和man[i]分别表示车到达景点i的最小时间和最后一个从点i出发的人。然后我们用num[i]表示从第i个节点下车的人。我们可以先用一个比较简单的dp求出在没有氮气的情况下车到达每个点的最短时间:

car[i]=max(car[i-1],man[i-1])+dis[i]; 

然后我们在考虑有氮气的情况:很简单的一点就是你要尽可能的让氮气作用的人多。如果我们再i到i+1的这条路上使用了氮气,那么我们需要看一下当汽车到达i+1时最后到达i+1那个点的人是否已经到了,也就是car[i+1] 与man[i]的关系。如果car[i+1] <=man[i],那么氮气只对从i+1下车的人起作用因为其他车上的人还需要等i+1这个点的人。如果car[i+1] >man[i],那么氮气的影响就可以到下一个景点了,所以我们建立一个g[i]数组表示从i点使用氮气之后可以影响到的最远的点,

g[i]=(car[i+1]<=man[i+1]?(i+1):g[i+1])

这样我们只需要寻找k次num[g[i]]-num[i]最大的i就可以了,每次寻找完之后在维护一下car数组和g数组就好了;

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define F(i,x,y) for(i=x;i<=y;++i)
#define Fr(i,x,y) for(i=x;i>=y;--i)
int n,m,k,dis[10010]={0},car[10010]={0},man[10010]={0},num[1010]={0},ans=0,g[1001]={0};
struct S{
	int st,en,time;
}a[10010];
int main()
{
	freopen("bus.in","r",stdin);
	freopen("bus.out","w",stdout);
	int i,j,x,y,z;
	scanf("%d%d%d",&n,&m,&k);
	F(i,2,n) scanf("%d",&dis[i]);
	F(i,1,m){
		scanf("%d%d%d",&a[i].time,&a[i].st,&a[i].en);
		man[a[i].st]=max(man[a[i].st],a[i].time); 
		num[a[i].en]+=1;
	}
	F(i,2,n) car[i]=max(car[i-1],man[i-1])+dis[i]; 
	F(i,1,m) ans+=car[a[i].en]-a[i].time;
	F(i,1,n) num[i]=num[i]+num[i-1];
	while(k){
		int maxn=0,now,sum;
		g[n]=g[n-1]=n;
		Fr(i,n-2,1) g[i]=(car[i+1]<=man[i+1]?(i+1):g[i+1]);
		F(i,1,n){
		  if(num[g[i]]-num[i]>maxn&&dis[i+1]>0){
		  	maxn=num[g[i]]-num[i];
		  	now=i;
		  }
	    }
		k-=1;ans-=maxn;dis[now+1]-=1;
		car[1]=0;
	    F(i,2,n) car[i]=max(car[i-1],man[i-1])+dis[i];		
	}
	printf("%d\n",ans);
}


牛耕式全覆盖算法-matlab代码 牛耕式路径全覆盖算法,也称为牛耕算法或者蚂蚁算法,是一种用于解决路径规划问题的启发式算法。这个算法的灵感来自于牛在耕田时的行为。在这个算法中,假设有一块田地需要耕作,牛从田地的某个角落开始行走,走过的路径会被标记。牛会优先选择尚未经过的路径,当所有的路径都走过后,算法停止。在路径规划问题中,田地可以看作是一个由节点和边构成的图。每个节点代表一个位置,每条边代表两个节点之间的连接。路径全覆盖问题是找出一组路径,使得每个节点都被至少一条路径经过。牛耕式路径全覆盖算法的基本思想是以启发式的方式逐步构建路径。 阅读详情

相关推荐

从课堂笔记到动手实践:用Multisim仿真高频谐振功放(丙类)的完整流程

本文详细介绍了使用Multisim仿真高频谐振功放(丙类)的完整流程,从仿真环境准备到电路搭建、偏置网络设计、信号注入与波形观测,再到效率优化与性能验证。通过14个关键操作步骤,帮助读者将高频电子线路的理论知识转化为动手实践,深入理解丙类功放的非线性工作状态和效率优化技巧。

weixin_30701575的博客 519

JAVA 游览时间最长

如果某游客12:00从景石出发,要求他17:00前到达湿地商业街,17:30离开湿地商业街(注:根据表2的要求在湿地商业街游览时间至少为30分钟)。建立数学模型,为该游客设计一条能游览完全部景点(景点①—⑦)且游览总时间最长的游览路线(假设在各个景点没有等待时间)。因为出发时间为12:00,到湿地商业街的时间为17:00,所以总的时间为T=5:00。总的时间T=步行时间W+游览时间V,即T=W+V...

abc1498880402的博客 1万+

从IMU到机器人定位:手把手教你用ESKF(Error-State Kalman Filter)搞定传感器融合

本文详细介绍了如何使用ESKF(Error-State Kalman Filter)实现IMU与多传感器的融合,解决机器人定位中的积分漂移问题。通过代码示例和Gazebo仿真案例,展示了ESKF在自动驾驶和移动机器人中的核心应用,包括误差状态建模、预测过程实现和观测更新策略,帮助开发者掌握这一高效滤波技术。

weixin_33275503的博客 281

诗经里写湿地的一句

蒹葭苍苍,白露为霜。所谓伊人,在水一方。 意境怎么就那么好!

技术代码资料库 323

Vivado IP核与约束文件管理指南:解决OOC警告、COE文件丢失与Block Design复用

本文详细介绍了Vivado IP核与约束文件管理的系统化方法,包括解决OOC警告、COE文件丢失与Block Design复用等常见问题。通过IP核锁定机制、分层约束架构和动态约束技术,提升FPGA工程的健壮性和团队协作效率,特别适合中大型项目开发。

weixin_30887919的博客 430

【Bluetooth蓝牙开发】九、BLE协议之GATT

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 4760

NOIP2011.day2.观光公交 题解

#include #include #include #include #include using namespace std; const int maxn=1005,maxm=10005; int n,m,k,ans; int d[maxn],bt[maxm],e[maxm],v[maxn],last[maxn]={0},t[maxn]={0},reduce[maxn]={0}; voi

Chrissie_的博客 585

STM32CubeIDE开发环境搭建与GPIO控制实战

嵌入式开发中,MCU开发环境构建是软硬件协同的起点,其核心在于工具链选型、外设抽象层级与调试可靠性。HAL库作为ST官方标准硬件抽象层,通过统一接口屏蔽芯片差异,显著提升工程可移植性;而STM32CubeIDE则以图形化配置+自动生成代码的方式,实现‘配置即代码’的确定性开发范式。该组合在教学验证、原型迭代和中小规模量产中具备高性价比技术价值,广泛应用于智能传感、工业HMI及IoT终端等场景。本文聚焦STM32CubeIDE 1.15.0环境部署、MyST账户与固件包管理、ST-LINK驱动校验,以及基于H

weixin_33531560的博客 79

Luogu 1315 【NOIP2011】观光公交 (贪心)

Luogu 1315 【NOIP2011】观光公交 (贪心) Description 风景迷人的小城Y 市,拥有n 个美丽的景点。由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0 分钟出现在1号景点,随后依次前往2、3、4……n 号景点。从第i 号景点开到第i+1 号景点需要Di 分钟。 任意时刻,公交车只能往前开,或在景点处等待。...

dipinzhu4111的博客 170

uniapp - [全端兼容] 高性能 tabbar 底部菜单凸起效果,原生系统自定义底部菜单不卡顿、切换页面不闪烁、自动缓存页面(底部菜单中间自定义一个图片并悬浮起来)

uniapp如何实现底部凸起按钮,uniapptabbar底部菜单怎么自定义,uniapp怎么让底部菜单中间突出来,uniapp自定义底部tabbar,uniapp高性能好用的底部菜单,uniapp自定义底部导航栏并解决闪烁问题,uniapp怎么设置凸起的底部tabbar,uniapp怎么用系统的底部菜单还想让中间的按钮凸起来,uniapp自定义tabbar性能不好怎么办,uni-app自定义导航栏实现中间凸起效果,uniapp底部导航栏中间圆形按钮凸起效果详细代码,uni-app自定义中间图标突起的

🏆 前端领域优质创作者 1万+

机器学习势能(MLPs) 第一章 基础理论与核心概念 第二章 数据生成与训练集构建

密度泛函理论(DFT)作为现代计算材料科学的基石,通过求解Kohn-Sham方程在电子结构层面提供可靠的势能面信息。然而,其计算复杂度随体系电子数呈O(N3) 至O(N4) 增长,对于包含数百个原子的体系,单点计算往往需消耗数小时至数天的计算资源。这一瓶颈严重限制了分子动力学模拟的时间尺度,传统DFT-MD通常仅能覆盖皮秒量级,远不足以观测扩散、相变等慢动力学过程。经验力场通过解析函数形式描述原子间相互作用,实现了经典力学的计算效率,但其参数化过程高度依赖物理直觉与经验调参。

VectorShift的博客 182

NOIP 2011 提高组 复赛 day2 bus 观光公交

NOIP 2011 提高组 复赛 day2 bus 观光公交 1.题目还是能很快看明白,不过,没啥感觉,只觉得拿部分分还是可以的。 2.结构体记录乘客信息,计算每个景点上车人数,每个景点下车人数,每个景点最早开车时间。 3.当然,先做些基础工作,再寻算法。 4. 5. 6. 7. 8. 9. 10. 附上AC代码,编译环境Dev-C++4.9.9.2

mrcrack的博客 1204

久坐不慌,健康护航 —— 智能震动提醒坐垫的设计与实现

硬件核心:选用 ESP32 为主控,HX711 + 应变片实现精准压力检测,8050 三极管驱动震动马达,锂电池 + TP4056 满足便携供电需求;软件逻辑:核心是 “压力阈值判断 + 时间计时”,达到久坐阈值后触发震动提醒,流程图清晰体现了循环检测、状态重置的核心逻辑;代码特性:代码注释完善,阈值可灵活调整,支持串口调试,新手可直接编译烧录并根据实际场景校准。

weixin_42300449的博客 398

【NOIP2011提高组】观光公交

题目背景 NOIP2011提高组DAY2试题3。 题目描述 风景迷人的小城Y市,拥有n个美丽的景点。由于慕名而来的游客越来越多,Y市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0分钟出现在1号景点,随后依次前往2、3、4……n号景点。从第i号景点开到第i+1号景点需要Di分钟。任意时刻,公交车只能往前开,或在景点处等待。 设...

ETO的博客 1546

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NOIP2011观光公交

风景迷人的小城 Y 市,拥有n 个美丽的景点。由于慕名而来的游客越来越多,Y 市特 意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0 分钟出现在1 号景点,随后依次前往2、3、4……n 号景点。从第i 号景点开到第i+1 号景点需要Di 分钟。 任意时刻,公交车只能往前开,或在景点处等待。 设共有 m 个游客,每位游客需要乘车1 次从一个景点到达另一个景点,第i 位游客在 Ti 分钟来到景点Ai,希望乘车前往景点Bi(Ai<Bi)。为了使所有乘客都能顺利到达目的地,公交车在每站

yangs_s的博客 1364

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

P1315 [NOIP2011 提高组] 观光公交

那么每次操作都会形成新的子集合(有可能会破开),从新的子集合中再挑选一段来操作,也会如上分析一样分成两个部分,当然也会选择「左端点」开始操作,这么显然的性质为什么又要重新提及呢?因为要引出一个结论,如果每次都选择符合区间的「左端点」来操作,直接每次选择「收益最高的点」的来操作就可以了,经过刚刚的分析就可以得到全局最优解。​ 每一段行驶的长度是固定的,人「到达」和「离开」景点的时间也是固定的,每个乘客的等待时间 = 公交车到达景点。,形如下图,会有若干个「加速段」,加速段都满足什么性质呢?

weixin_43863957的博客 1066

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NOIP2011 观光公交

话说,我终于AC了这个题 这是一个贪心,说实话开始做的时候......完全没看出来QAQ。。 可能有人说这是个dp,但这真不是(dalao请无视) 这真的只是个贪心。。。。 首先对于每个点当然是能走就走, 不能走就等待,这是无法控制的。 所以只考虑氮气加速器加在哪里可以使时间总和尽量少。 所以 如果选择加速,可能会使后面等待的时间更长,或者更短,对后面都会有影响。 但是沿着一条边加速会影响后面的所...

weixin_34067980的博客 208

[Noip2011]观光公交

Description 风景迷人的小城 Y 市,拥有nn个美丽的景点。由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0 分钟出现在1号景点,随后依次前往2、3、4……nn号景点。从第ii号景点开到第i+1i+1号景点需要DiD_i分钟。任意时刻,公交车只能往前开,或在景点处等待。设共有mm个游客,每位游客需要乘车1 次从一个景点到达另一个景点

Canopus 449

NOIP 2011 观光公交

贪心+神奇递推

我要吃熊猫 492

【noip2011】观光公交

题解: 做这题的时候为了敢速度- - 直接orz了神小黑的题解 其实我还是有想一个拙计的方法的- - dp:f[i][j] 表示到i点使用j个加速器 在i前上车的人的时间和 轻松愉悦转移之 - - 但是有很严重的两个问题 1.空间复杂度O(nk)爆掉 2.时间复杂度O(nk^2)更呵呵- - 于是弃疗 正解: 贪心! time[i]表示到i点的时间 la...

dee2784的博客 129

NOIP2011 [提高组] 观光公交

转载 原文载于https://blog.nowcoder.net/n/c3b27ff350044e53bd71acbf94e260f9by 闫学灿 题目描述 风景迷人的小城 Y 市,拥有n 个美丽的景点。由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0 分钟出现在1号景点,随后依次前往2、3、4……n 号景点。从第i 号景点开到第i+...

weixin_30896825的博客 439

noip2011 观光公交

风景迷人的小城Y 市,拥有n 个美丽的景点。由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2、3 、4 ……n 号景点。从第 i 号景点开到第 i+1 号景点需要 Di 分钟。任意时刻,公交车只能往前开,或在景点处等待。 ……

G_congratulation的博客 615
上一篇: 主席树模板 [poj2104]K-th Number
下一篇: [bzoj1003]物流运输trans
FZHvampire
博客等级 码龄12年 24粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值