最优配餐bfs-python题解
标题 最优配餐
【问题描述】
栋栋最近开了一家餐饮连锁店,提供外卖服务。随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题。
栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客户(蓝色标注),有一些格点是不能经过的(红色标注)。
方格图中的线表示可以行走的道路,相邻两个格点的距离为1。栋栋要送餐必须走可以行走的道路,而且不能经过红色标注的点。
送餐的主要成本体现在路上所花的时间,每一份餐每走一个单位的距离需要花费1块钱。每个客户的需求都可以由栋栋的任意分店配送,每个分店没有配送总量的限制。
现在你得到了栋栋的客户的需求,请问在最优的送餐方式下,送这些餐需要花费多大的成本。
【输入形式】
输入的第一行包含四个整数n, m, k, d,分别表示方格图的大小、栋栋的分店数量、客户的数量,以及不能经过的点的数量。
接下来m行,每行两个整数xi, yi,表示栋栋的一个分店在方格图中的横坐标和纵坐标。
接下来k行,每行三个整数xi, yi, ci,分别表示每个客户在方格图中的横坐标、纵坐标和订餐的量。(注意,可能有多个客户在方格图中的同一个位置)
接下来d行,每行两个整数,分别表示每个不能经过的点的横坐标和纵坐标。
【输出形式】
输出一个整数,表示最优送餐方式下所需要花费的成本。
【样例输入】
10 2 3 3
1 1
8 8
1 5 1
2 3 3
6 7 2
1 2
2 2
6 8
【样例输出】
29
【评分标准】
评测用例规模与约定
前30%的评测用例满足:1<=n <=20。
前60%的评测用例满足:1<=n<=100。
所有评测用例都满足:1<=n<=1000,1<=m, k, d<=n^2。可能有多个客户在同一个格点上。每个客户的订餐量不超过1000,每个客户所需要的餐都能被送到。
n,m,k,d=map(int,input().split())
s=[[0 for i in range(n+1)] for j in range(n+1)]ans=[[0x3f for i in range(n+1)] for j in range(n+1)]x=[]
y=[]dx=[-1,0,1,0]
dy=[0,1,0,-1]for i in range(m):x.append(list(map(int,input().split())))ans[x[i][0]][x[i][1]]=0
for i in range(k):y.append(list(map(int,input().split())))for i in range(d):a,b=map(int,input().split())s[a][b]=1def bfs():global xglobal answhile len(x)>0:f=x.pop(0)for i in range(4):x1=f[0]+dx[i]y1=f[1]+dy[i]if x1>=1 and y1>=1 and x1<=n and y1<=n and s[x1][y1]==0:if ans[x1][y1] > ans[f[0]][f[1]]+1:ans[x1][y1]=ans[f[0]][f[1]]+1x.append([x1,y1])res=0
bfs()
for i in range(k):res+=ans[y[i][0]][y[i][1]]*y[i][2]print(res)
最优配餐bfs-python题解相关推荐
- CCF201409-4 最优配餐(100分)
试题编号: 201409-4 试题名称: 最优配餐 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么合理的给客 ...
- AcWing 3205. 最优配餐
AcWing 3205. 最优配餐 栋栋最近开了一家餐饮连锁店,提供外卖服务. 随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题. 栋栋的连锁店所在的区域可以看成是一个 n×n 的方格 ...
- CSP认证201409-4 最优配餐[C++题解]:bfs、多源bfs、最短路、图论
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 有很多起点S,同时有很多终点T,求每个终点到起点中最短的路,只要是到达其中一个起点就行.所以这是一个多源bfs的题目. ac代码 # ...
- 浅谈“大数据”与“航空配餐大数据”
2016年,当AlphaGo成功击败韩国职业九段棋手李世石时,人们就开始相信大数据不是无中生有的噱头,而是人类又一项伟大发明.到目前为止,大数据产品已经数不胜数,它改变着人们的思维方式.生活方式和生活 ...
- WinFormreportViewer(rdlc)报表[列表]的使用(一)(附源码示例) 之配餐系统的开发
紧接着"WinForm"reportViewer报表[矩阵]的使用(一)(附源码示例)" 之配餐系统的开发"这篇文章,此文与大家分享的是在 配餐系统的开发 中使 ...
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(四)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(四) 目录 Step 3: Tune gamma步骤3:伽马微 ...
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(三)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(三) 目录 3. 参数微调案例/Parameter Tunin ...
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(二)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(二) 目录 2. xgboost参数/XGBoost Para ...
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(一)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(一) 目录 概述/Overview 介绍/Introducti ...
最新文章
- 【Qt】一个使用QEventLoop时,遇到的教训
- 数据缺失、混乱、重复怎么办?最全数据清洗指南
- AI圈真魔幻!谷歌最新研究表明卷积在NLP预训练上竟优于Transformer?LeCun暧昧表态...
- mysql 列转置_MySQL 行列转置
- mysql 8.0 集群_集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例
- python设置格式模板
- petshop学习笔记(1)
- php页面的特点_带你认识PHP的四大特性八大优势
- oracle指定过个时间点 job_SQL SERVER 快速恢复:生成指定时间点的恢复脚本
- 浮云语音转文字识别本地音频文字内容教程
- [公告]请不要在首页转载文章
- ApacheCon Asia 2022 正式启动,数据流专题 Call For Speaker
- 【读书笔记《Android游戏编程之从零开始》】4.Android 游戏开发常用的系统控件(EditText、CheckBox、Radiobutton)
- 驱动概念(uboot命令)
- h5分享微信好友朋友圈
- java之集合ArrayList,LinkedList,HashMap运用
- springboot+REST
- 已知a和b的最大公因数和最小公倍数求这两个数字
- 为什么进程切换比线程切换耗费资源?
- R语言自学笔记:数据处理、数据分布及数据检验