1018 Public Bike Management (30分)(不长,不水)

PAT甲级真题 1018 Public Bike Management (30分) C++实现(基于Dijkstra算法暴力存储所有最短路径;测试点5、7大坑) 题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and return it to any other stations in ... 阅读详情

1018 Public Bike Management (30分)

分析

求最短路的同时,要求带出的车子最少,再要求带回的车子最少
迪杰斯特拉算法是贪心算法的一种,迪杰斯特拉算法能得出最优解,要求问题满足最优子结构条件。若携带车辆数目与带回车辆数目这两个尺度加到其中的话,满足最优子结构条件,即不能保证当前步骤选择的节点满足路径最短、带出车子最少、带回车子最少的条件时,之后的步骤也满足全局最优的条件
反例如下:
10 4 4 5
6 7 5 0
0 1 1
0 2 1
1 3 1
2 3 1
3 4 1
因此,只能用迪杰斯特拉算法求出最短路径以及对应的各个前驱节点,再用深度优先遍历各个满足最短路径的解,从而得出全局最优解

代码

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int c, n, s, m, a, b, l, distTo[510], marked[510], bike[510], take_from = 999999999, take_back = 999999999;
vector<int> pre[510], o, oo;
vector<pair<int, int> >g[510];
struct node {
 int v, l;
 node() {}
 node(int vv, int ll) :v(vv), l(ll) {}
 bool operator<(node e)const {
  return l > e.l;
 }
};
void dfs(int i) {
 o.push_back(i);
 int j = 0;
 for (; j < pre[i].size(); ++j)dfs(pre[i][j]);
 if (j == 0) {
  int ff = 0, bb = 0;
  for (int k = o.size() - 2; k >= 0; --k) {
   bb += bike[o[k]];
   if (bb < 0) {
    ff -= bb;
    bb = 0;
   }
  }
  if (ff < take_from || (ff == take_from && bb < take_back)) {
   oo = o;
   take_from = ff;
   take_back = bb;
  }
 }
 o.pop_back();
}
int main() {
 scanf("%d %d %d %d", &c, &n, &s, &m);
 for (int i = 1; i <= n; ++i) {
  scanf("%d", &bike[i]);
  bike[i] -= c / 2;
 }
 for (int i = 0; i < m; ++i) {
  scanf("%d %d %d", &a, &b, &l);
  g[a].push_back(pair<int, int>(b, l));
  g[b].push_back(pair<int, int>(a, l));
 }
 priority_queue<node> q;
 q.push(node(0, 0));
 fill(distTo, distTo + 510, 999999999);
 distTo[0] = 0;
 while (!q.empty()) {
  int f = q.top().v;
  q.pop();
  if (f == s)break;
  marked[f] = 1;
  for (int i = 0; i < g[f].size(); ++i) {
   int v = g[f][i].first, l = g[f][i].second;
   if (distTo[v] > distTo[f] + l) {
    distTo[v] = distTo[f] + l;
    pre[v].clear();
    pre[v].push_back(f);
    q.push(node(v, distTo[v]));
   }
   else if (distTo[v] == distTo[f] + l)
    pre[v].push_back(f);
  }
 }
 dfs(s);
 printf("%d 0", take_from);
 for (int i = oo.size() - 2; i >= 0; --i)
  printf("->%d", oo[i]);
 printf(" %d", take_back);
 return 0;
}
1018 Public Bike Management (30)(30 分) 1 题目 2 解题思路 3 AC代码 4 总结 1 题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station ... 阅读详情

相关推荐

PAT甲级 1018 Public Bike Management DFS

【代码】PAT 1018 Public Bike Management DFS。

polarours的博客 710

PAT甲级1018 Public Bike Management(30分) (测试点5,7坑)

PAT甲级1018 Public Bike Management (30分)(测试点5,7坑) 一:涉及的知识点 1:dijkstra算法~~(当然堆优化dij也行)~~ 2:dijkstra中的逆向存点法,即有多条同样短的最短路径,并把他们点全部存下来 3:dfs遍历图,不过处理的时候有技巧(测试点5,7)思维题 二:题目链接及其大意 https://pintia.cn/problem-sets/994805342720868352/problems/994805489282433024 There is

m0_50796573的博客 1688

PAT 1018. Public Bike Management (30)

题目说明:有公共自行车网,从原点0出发到目标点sp,要把所有点的自行车数都置为half-full,找到最优路径,优先级依次为:路径长度最短,send最少,back最少。 算法:最短路径,dfs回溯。求出所有0到sp的路径,然后比较找出最优解。

彼岸大鱼的专栏 3602

1018 Public Bike Management (30 分)

思路: Dijkstra+DFS AC CODE: #include <iostream> #include <vector> using namespace std; const int maxn = 1010; const int INF = 0x3fffff; int G[maxn][maxn]; bool vis[maxn] = {false}; int d[max...

weixin_42129912的博客 293

导数在工程与AI中的12个实战应用解析

导数作为数学中的基本概念,本质是描述变化率的工具,其核心价值在于将非线性问题局部线性化处理。从原理上看,通过极限过程捕捉函数瞬时变化特性,使工程师能精确控制系统动态行为,帮助科学家量化自然规律变化速率。在技术实现层面,现代符号计算(如Mathematica)、数值计算(如MATLAB)和自动微分(如PyTorch)工具链的发展,大幅提升了导数计算的效率与精度。典型应用场景涵盖机械控制(如ABS防抱死系统)、金融工程(如期权希腊值计算)、医疗影像(如Canny边缘检测)等领域。特别在机器学习中,反向传播算法依

weixin_35509395的博客 317

微信小程序利用Echarts加载中国地图的步骤

微信小程序如何利用Echarts加载地图?可按照如下四个步骤进行。(阅读时间大概3分钟)。

成都都成 5279

1018 Public Bike Management (30分)

这道题对我来说是一个新知识点,一开始用dijkstra解,只有25分,原因是不能用后面节点多出来的车辆弥补前面。 用dijkstra,25分 #include <iostream> #include <cmath> #include <stack> using namespace std; const int inf=99999999; int vnum[520...

Hi7brooke的博客 321

Zemax显微镜设计:从物镜到目镜的完整光学系统优化

本文详细介绍了使用Zemax进行显微镜光学系统设计的完整流程,从物镜到目镜的优化技巧。通过实战案例和关键参数设置,帮助读者掌握数值孔径、视场角等核心概念,实现高分辨率显微镜设计。文章特别强调了系统级优化和公差分析的重要性,为科研和工业检测提供可靠的光学解决方案。

weixin_42549451的博客 439

1018 Public Bike Management (30 分,附详细注释,逻辑分析)

写在前面 实现思路 Dijkstra计算最短路径 参数传递不满足最优子结构具体待研究 DFS递归迭代计算最优解 变量、函数相对较繁琐,涉及知识点较多研究ing 不会告诉你,一般博主不太懂的问题,都不怎么总结 测试用例 input: 10 3 3 5 6 7 0 0 1 1 0 2 1 0 3 3 1 3 1 2 3 1 output: 3 0->2->3 0 ac代码...

kngines 2296

Python Selenium自动化浏览器实战:从环境搭建到高级技巧

浏览器自动化是现代软件开发与数据处理中的关键技术,它通过程序模拟用户操作,实现网页交互的自动化执行。其核心原理是基于WebDriver协议,通过驱动程序与浏览器进行通信,从而控制浏览器的各种行为。这项技术的价值在于能够将重复性高、耗时长的Web操作转化为可编程、可复用的脚本,极大提升工作效率和准确性。在应用场景上,它广泛覆盖了Web自动化测试、数据采集与爬虫、日常办公流程自动化以及RPA(机器人流程自动化)等多个领域。本文聚焦于Python环境下Selenium这一经典工具,深入讲解其环境配置、八大元素定位

anwenzhao0749的博客 446

BU61580芯片实战:手把手教你配置1553B通信的BC端寄存器(含代码解析)

本文详细解析了BU61580芯片在1553B通信中的BC端寄存器配置方法,包括关键寄存器功能映射、初始化代码解析及回环测试实现。通过实战案例和代码示例,帮助开发者快速掌握1553B通信的核心技术,提升系统稳定性和通信质量。

a1b2c的博客 224

PAT甲级 1018 Public Bike Management

PAT甲级 1018 Public Bike Management There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and retur...

旺崽的博客 2994

OpenClaw 生成测试用例

OpenClaw 只是躯干,Skills 才是灵魂。很多同学觉得 OpenClaw 没用,就像是买了一台顶级电脑却没装操作系统。通过这四步走,不仅可以学会如何让 AI 干活,更重要的是,可以学会如何管理 AI 的能力。

十二测试录 738

PAT 甲级 1018 Public Bike Management

PAT 甲级 1018 Public Bike Management 题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and ...

努力不脱发的程序媛 224

反光柱定位算法中的移动机器人姿态计算原理-经典三边定位最小二乘法计算定位-直接法计算定位

(二)计算姿态方式是我们已经通过最小二乘得到了小车在地图中的位置或者是雷达在地图中的位置,又因为我们知道雷达与小车的安装坐标,所以可以求解出一其中一个坐标的知量,通过小车在地图中坐标与雷达在地图中坐标可以得到一条向量,通过计算向量在地图中的角度就能得到姿态了。与最小二乘三边测量法相比,新算法在动态调整、优化过程和鲁棒性方面优势明显,尤其适合动态环境下的机器人定位,而最小二乘三边测量法在动态复杂环境中精度相对较低。(一)与(二)的区别主要是在计算姿态上的算法不同。经典三边定位最小二乘法 (法一)

苏凯的博客 1141

【AI编程】2025年16款主流AI编程工具全维度测评及选型指南

2025年16款主流AI编程工具全维度测评及选型指南

funfan的博客 1万+

PTA甲级 1018 Public Bike Management (30分)

强烈推荐,刷PTA的朋友都认识一下柳神–PTA解法大佬 本文由参考于柳神博客写成 柳神的优快云博客,这个可以搜索文章 柳神的个人博客,这个没有广告,但是不能搜索 还有就是非常非常有用的 算法笔记 全名是 算法笔记 上级训练实战指南 //这本都是PTA的题解 算法笔记 PS 今天也要加油鸭 题目原文 There is a public bike service in Hangzhou City which provides great convenience to the tourists from

Huangpengyu123的博客 378

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

1018 Public Bike Management (30 分)

问题描述:当某个站需要调整时,控制中心选择最近的路径到达该站,并调整路径上所有的站。注意:可以从路径上收集车。 解题思路:dijksta的应用。首先选择最短的路径,再判断所需携带的车辆。局部最优并不是全局最优。。。。。 所以dijkstra错误。应该用dfs。 dijkstra方法。25分 #include&lt;iostream&gt; #include&lt;vector&gt; u...

lianwaiyuwusheng的博客 857

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PAT甲级 1018 Public Bike Management (30分)

1018 Public Bike Management (30分) 题目链接:PAT A 1018 题目大意:城市中有一张共享单车图,下标为0的那个点是共享单车管理中心。完美车站是指一个车站拥有的共享单车数目恰好等于车站最大共享单车数的一半。当某个车站车数等于最大单车数或者为零的时候,中心会调整该车站为完美车站,并且将沿途所有车站调整为完美车站。中心将总是选择距离最近的那一条路径去调整问题车站...

weixin_43684054的博客 427

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

最短路_1018 Public Bike Management (30 分)

1018 Public Bike Management (30 分) There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and ret...

A_Bo的博客 802

PAT 甲级-1018 Public Bike Management (30)(好题)(30 分)

题目大意:每个自行车车站的最大容量为一个偶数cmax,如果一个车站里面自行车的数量恰好为cmax / 2,那么称处于完美状态。如果一个车展容量是满的或者空的,控制中心(处于结点0处)就会携带或者从路上手机一定数量的自行车前往该车站,一路上会让所有的车展沿途都达到完美。现在给出cmax,车站的数量n,问题车站sp,m条边,还有距离,求最短路径。如果最短路径有多个,求能带的最少的自行车数目的那条。如果...

安得广厦千万间的博客 1437
上一篇: 1019 General Palindromic Number (20分)(一个字水)
下一篇: 1010 Radix (25分)(一个字短!)
大了七八个
博客等级 码龄8年 2粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值