pat1018Public Bike Management (30)

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

题意分析:

(1)给出城市自行车租赁点分布以及路线,找到从PBMC出发到达需要调整目标点的最短路径,同时保证在调整这条路径上所有站点的自行车数时,出发时携带的自行车最少,如过不止一条,需要找出返回时携带最少自行车的最佳路线

(2)PAT中这种类型的题目比较常见,经常是从出发点到目标点求出最短路径,无非是在最佳路径上做出一些新花样,保证什么量最少,什么量最多,可以参考1003,也是同类型的题目,这类题目往往都是采用深度优先搜索,然后动态更新最短路径的同时,检查目标变量是否需要被修改等等,同时需要注意这些量并不是全局的,而是有依赖关系的,所以更新的时候要额外注意。

(3)此题的特殊性在于计算需要从出发点携带多少车辆是需要顺序地从最短路径的出发点到目标点遍历,在调整的过程中缺少自行车最多的就是最终从PBMC需要携带的量

可能坑点:

(1)这里从出发点最少携带量和最少回收量都不是全局的,最少携带量是依赖最短路径的,最少回收量是依赖在最短路径和最少携带量的;因此当最短路径被更新的时候,最少携带量和最少回收量都需要被强制更新。最少携带量被更新的时候,最少回收量也需要强制更新

#include <iostream>
#include <string.h>
#include <limits.h>
using namespace std;
int C,N,S,M;
int map[501][501]={-1};
int bikes[501];
int visit[501]={0};
int minPath[501]={0};
int nextStation[501]={0};
int length=0;
int minLength=INT_MAX;
int send,colect;
int minSend=INT_MAX,minColect=INT_MAX;

void getSendAndColect(int nextStation[])
{
    colect=0;
    send=INT_MAX;
    int i=0;
    while(i!=S)
    {
        colect+=bikes[nextStation[i]]-C/2;
        if(colect<send)send=colect;
        i=nextStation[i];
    }
    send=send<0?-send:0;
    colect+=send;
    colect=colect>0?colect:0;
}
//深度优先遍历
void DFS(int start,int end)
{
    if(start==end)
    {
        if(length<=minLength)
        {
            getSendAndColect(nextStation);
            if(length<minLength)
            {
                minLength=length;
                minSend=send;
                minColect=colect;
                memcpy(minPath,nextStation,sizeof(nextStation));
            }
            else
            {
                if(send<=minSend)
                {
                    if(send<minSend)
                    {
                        minSend=send;

                        minColect=colect;
                        memcpy(minPath,nextStation,sizeof(nextStation));
                    }
                    else
                    {
                        if(colect<minColect)
                        {
                            minColect=colect;
                            memcpy(minPath,nextStation,sizeof(nextStation));
                        }
                    }
                }
            }
        }
        return;
    }
    for(int i=1;i<=N;i++)
    {
        if(map[start][i]&&!visit[i])
        {
            visit[i]=1;
            nextStation[start]=i;
            length+=map[start][i];
            DFS(i,end);
            visit[i]=0;
            length-=map[start][i];
        }
    }
}
//打印最佳路径
void printPath(int minPath[],int Sp)
{
    int i=0;
    while(i!=Sp)
    {
        cout<<i<<"->";
        i=minPath[i];
    }
    cout<<i;
}

int main()
{
    cin>>C>>N>>S>>M;
    int i=1;
    while(i<=N)cin>>bikes[i++];
    int j=0;
    int from,to,cost;
    while(j<M)
    {
        cin>>from>>to>>cost;
        map[from][to]=cost;
        map[to][from]=cost;
        j++;
    }
    DFS(0,S);
    cout<<minSend<<" ";
    printPath(minPath,S);
    cout<<" "<<minColect<<endl;
    return 0;
}


告别眼疲劳!保姆级教程:给你的SecureCRT v8.7.2换上护眼高亮配色(附透明背景设置) 本文提供了一份详细的SecureCRT v8.7.2护眼高亮配色方案教程,帮助程序员缓解眼疲劳问题。通过科学调整配色方案、动态环境自适应设置以及字体渲染优化,显著提升终端使用的舒适度和工作效率。特别推荐Solarized Dark和One Dark Pro医学适配版配色方案,适合长时间编码工作。 阅读详情

相关推荐

【无线通信】射频杂散(RF Spurious Emissions)

射频杂散(RF Spurious Emissions)是指在无线通信系统中,除了在指定频率范围内的预期信号之外,任何不需要的或非预期的射频信号。这些杂散信号可能会干扰其他通信系统,降低系统性能,并违反无线电通信法规。射频杂散通常包括谐波、次谐波、互调产物和其他非线性失真所产生的信号。

qq_38801607的博客 5424

1018. Public Bike Management

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 return it to an...

Mapoos 1602

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 524

PAT甲级-1018 Public Bike Management

PAT甲级-1018(dijkstra+dfs)

eerrtyuuhgg的博客 567

Python实战:5分钟搞定抖音无水印视频下载(附完整代码)

本文系统介绍了抖音无水印视频下载的多种技术方案,重点解析了抖音视频的获取逻辑与去水印原理。文章提供了从零代码的浏览器插件到可编程的Python脚本的完整实现路径,并附带了详细的代码示例,帮助用户快速构建自己的抖音视频下载工具箱。

weixin_29089057的博客 847

PT32F030与MT6826S SPI通讯实战:从硬件连接到数据交互全流程解析

本文详细解析了PT32F030与MT6826S通过SPI通讯的全流程,包括硬件连接、电路设计、SPI外设初始化配置以及数据交互协议实现。通过实战案例和代码示例,帮助开发者快速掌握PT32F030与MT6826S的SPI通讯技术,实现精准的角度和速度数据采集。

weixin_29189373的博客 420

pat 甲级 1018 Public Bike Management

2.send(PBMC需要发出的自行车数量)如何在满足要求下保证最小,可以send初始为0,DFS遍历所有最短路径,当节点不完美时,send-(最大数量/2-节点bike的数量)即需要满足perfect所需的bike数目的负值。而带回来的bike数量则是发出的自行车数量-路径满足perfect所需的bike数量。(3)在(1)(2)都满足的条件下,带回来的bike需要最小;(2)在(1)都满足的条件下,PBMC发出的bike需要最小。(1)路径取得最小值 (Dijkstra()已经实现)

weixin_50671259的博客 649

鸢尾花分类预测

鸢尾花数据总用有150个样本,是一个典型的分类数据集,共有3个类别,分别是山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica),每个样本的特征有4列sepal_length:萼片长度sepal_width:萼片宽度petal_length:花瓣长度petal_width:花瓣宽度这里我们定义了随机森林模型作为实例,来进行模型训练,之后我们会对其使用网格搜索找到最优的参数。

优快云 精品推荐 2188

1018 Public Bike Management (Dijkstra + DFS)

1018 Public Bike Management

老顽固也可爱 319

YOLO11改进-注意力-引入Deformable Large Kernel Attention (DLKA) 解决多尺度、小目标、遮挡等问题

Deformable Large Kernel Attention (DLKA) 是一种用于视觉任务的注意力机制,旨在提升模型在处理不同尺寸和形状对象时的灵活性和性能。DLKA 的设计灵感源自传统的注意力机制,但通过引入可变形核(deformable kernel)来增强对局部特征的适应能力。

qq_64693987的博客 4042

Codex 100个真实案例 - 用AI生成Blender 3D建模脚本(建模师要失业了?)

本案例将展示如何用 Codex 生成 Blender Python API(bpy)脚本,自动创建完整的 3D 模型。我们将从基础几何体开始,逐步实现布尔运算、材质设置、光照配置,最终完成一张精美桌子的 3D 建模——包括桌面、桌腿、倒角、木纹材质。还会实现参数化批量生成不同风格的桌子、渲染输出 PNG 图片、以及 360 度旋转动画。全程用自然语言驱动 Codex,让建模从"点鼠标"变成"说人话"!

yueyeguzhuo的专栏 630

PAT甲级——1001.Public Bike Management

时间限制&amp;nbsp;1000 ms 内存限制&amp;nbsp;65536 KB 代码长度限制&amp;nbsp;100 KB 判断程序&amp;nbsp;Standard (来自 小小) 题目描述 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all ov...

wardseptember的博客 979

基于STM32、HAL库的IP5356M快充协议芯片简介及驱动程序设计

@param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。

corlin6688的博客 1219

PAT甲级1018 Public Bike Management (30分)

PAT甲级1018 Public Bike Management (30分) 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 ren...

All_Might 274

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【PAT甲级】个人做题记录之:1018 Public Bike Management (30 分)

PAT甲级圆满考完了,这次也考了一个相对不错的成绩,之后可能就很少刷PAT题库了,慢慢将之前刷题的过程补充记录上来吧 1018 Public Bike Management 题目描述 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all ov...

初见还是重逢的博客 500

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

\quad这个题目的是要我们能记录所有的最短路径,在这些路径中选择符合题目的那一种输出。我用vector<int> pre[maxn]数组记录符合最短路时节点的前驱节点,用Dijistra获得这个数组。最后用DFS对pre数组进行深搜,找出所有的最短路径来计算需要从中心拿走的自行车数量和需要带回中心的数量,比较输出在从中心带出自行车数量最少的前提下带回中心数量最少的那一种解答,记录此...

qq_40438165的博客 1618

IEM模型,地表粗糙度模拟

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

PAT甲级 1018 Public Bike Management (30分)

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

weixin_43684054的博客 426

【PAT】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 return it to any other stations in the

此去经年 1132

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

题目链接:PAT甲级 - 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 st...

223

PAT 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 retu...

peanWang的博客 403

PAT 1018 Public Bike Management (30)

1018 Public Bike Management (30)(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...

ryo_218的博客 217

PAT A 1018 Public Bike Management (30 分)

一、题目概述&样例 最短路径问题

Siumai's Blog 222

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

点击链接PAT甲级-AC全解汇总 题目: 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 o...

卷子的博客 468

PAT-1018 Public Bike Management (30)

直接用dijkstra求取,只能拿到22,四个case过不了 #include<stdio.h> #include<stack> using namespace std; int bike_count[510]; int bike_sum[510]; int bike_sum_num[510]; int map[510][510]; bool vi...

weixin_30700099的博客 87

【PAT甲级题解记录】1018 Public Bike Management (30 分)

简单来说就是求单源最短路径,但是每个点都有一定数量的自行车,并且给定一个标准车数,我们要从起点到终点一边走一边调整每个点的车数至标准车数。也就是说我们出发时需要拿一定数量的车,在路上遇到多的可以补充进来,少的就要用出去,最终满足使所有车数都标准。 现在要求最短路径下,出发时拿的车数最小的情况,当拿出最小情况一样,就要求拿回车数最小的情况(车多出来了就要拿回去)。这里很坑,他有三个条件,前两个条件相同情况下还会看第三个,感觉姥姥这题出的太折磨了。(菜是原罪)

retr0的博客 436
上一篇: pat1017Queueing at Bank (25)
下一篇: pat1019General Palindromic Number (20)
LostStephon
博客等级 码龄11年 14粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值