Day7 备战CCF-CSP练习

news/2024/10/14 8:26:42

Day 7

题目描述

栋栋最近开了一家餐饮连锁店,提供外卖服务。

随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题。

栋栋的连锁店所在的区域可以看成是一个 \(n×n\)的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客户(蓝色标注),有一些格点是不能经过的(红色标注)。

方格图中的线表示可以行走的道路,相邻两个格点的距离为 \(1\)

栋栋要送餐必须走可以行走的道路,而且不能经过红色标注的点。

p41.png

送餐的主要成本体现在路上所花的时间,每一份餐每走一个单位的距离需要花费 \(1\) 块钱。

每个客户的需求都可以由栋栋的任意分店配送,每个分店没有配送总量的限制。

现在你得到了栋栋的客户的需求,请问在最优的送餐方式下,送这些餐需要花费多大的成本。

输入格式

输入的第一行包含四个整数 \(n,m,k,d\),分别表示方格图的大小、栋栋的分店数量、客户的数量,以及不能经过的点的数量。

接下来 \(m\) 行,每行两个整数 \(x_i,y_i\)
,表示栋栋的一个分店在方格图中的横坐标和纵坐标。

接下来 \(k\) 行,每行三个整数 \(x_i,y_i,c_i\),分别表示每个客户在方格图中的横坐标、纵坐标和订餐的量。(注意,可能有多个客户在方格图中的同一个位置)

接下来 \(d\) 行,每行两个整数,分别表示每个不能经过的点的横坐标和纵坐标。

输出格式

输出一个整数,表示最优送餐方式下所需要花费的成本。

数据范围

\(30%\) 的评测用例满足:\(1≤n≤20\)
\(60%\) 的评测用例满足:\(1≤n≤100\)
所有评测用例都满足:\(1≤n≤1000,1≤m,k,d≤n^2,1≤x_i,y_i≤n\)
可能有多个客户在同一个格点上。
每个客户的订餐量不超过 \(1000\),每个客户所需要的餐都能被送到。

输入样例:

10 2 3 3
1 1
8 8
1 5 1
2 3 3
6 7 2
1 2
2 2
6 8

输出样例:

29

题目分析

\(bfs\) 找到到各点的最短路,计算费用即可

C++ 代码

注: 建议用scanf 读取,不然会\(TLE\),不然就和我一样关闭流同步

#include <bits/stdc++.h>using namespace std;const int N = 1010;typedef pair<int, int> PII;int dist[N][N] , g[N][N];
pair<PII , int> cus[N * N];
bool st[N][N];
int n , m , k, d;
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int main()
{ios::sync_with_stdio(false);cin.tie(0) , cout.tie(0);cin >> n >> m >> k >> d;queue<pair<int , PII>> q;while (m -- ){int x , y;cin >> x >> y;q.push({0 , {x ,y}});st[x][y] = true;}for(int i = 0 ; i < k ; i ++){int x , y , c;cin >> x >> y >> c;cus[i] = {{x , y} , c};}while(d --){int x , y;cin >> x >> y;g[x][y] = 1;}while(q.size()){auto t = q.front();q.pop();int dis = t.first , x = t.second.first , y = t.second.second;for(int i = 0 ; i < 4 ; i ++){int tx = x + dx[i] , ty = y + dy[i];if(tx <= 0 || ty <= 0 || tx > n || ty > n || g[tx][ty]) continue;if(st[tx][ty]) continue;st[tx][ty] = true;dist[tx][ty] = dis + 1;q.push({dis + 1 , {tx , ty}});}}long long res = 0;for(int i = 0 ; i < k ; i ++){// cout << dist[cus[i].first.first][cus[i].first.second] << '\n';res += dist[cus[i].first.first][cus[i].first.second] * cus[i].second;}cout << res << '\n';return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71311.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Windows Server 2025 OVF, released Sep 2024 (sysin) - VMware 虚拟机模板

Windows Server 2025 OVF, released Sep 2024 (sysin) - VMware 虚拟机模板Windows Server 2025 OVF, released Sep 2024 (sysin) - VMware 虚拟机模板 2024 年 9 月版本更新,现在自动运行 sysprep,支持 ESXi Host Client 部署 请访问原文链接:https://sysin.org/blog/windo…

Burp Suite Professional 2024.9 发布下载,新增功能概览

Burp Suite Professional 2024.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描Burp Suite Professional 2024.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接:https://sys…

C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

再见,数据中台,理想还在路上

近日,Gartner发布了24年《中国数据分析及人工智能成熟度周期报告》,在成熟度曲线中声明“数据中台”已被淘汰。数据中台,这个曾被奉若圭臬,视为先进架构的标志性建筑,将就此将淡出历史舞台。 有些东西,在它真正消亡前,就已经被遗忘。 其实,早在几年前,国内技术圈已经…

超级干货:Air780E之RS485通信篇,你学会了吗?

​ 今天,我们来学习低功耗4G模组Air780E的RS485通信,同学们,你学习了吗? 一、RS485简介 物联网(IoT)在工业场景中的应用越来越广泛,而RS485是一种常见的通信协议,广泛应用于工业自动化和物联网系统中。 RS485是一种串行通信标准,主要用于长距离、多节点通信。适用于工…

远程升级频频失败?原因竟然是…

​最近有客户反馈在乡村里频繁出现掉线的情况。 赶紧排查原因! 通过换货、换SIM卡对比排查测试,发现只有去年采购的那批模块在客户环境附近会出现掉线的情况,而今年采购的模块批次就不会掉线。。。 继续追究原因,联系对应的销售工作人员,了解到差异就是模块内的固件版本不…

时间函数:与时间相关那些事。。。

​ 在LuatOS中,获取时间函数用得最多的就是os.time()函数。 应很多同学要求,今天,我会讲一些与这个函数以及其他时间函数相关的知识。 一、时间戳相关 os.time()这个函数,只能获取当前时间戳;如果客户希望获取的是当前时间,即相应的年月日时分秒,可以使用os.date()函数。…

异常重启怎么破?多方排查后,原因竟然是。。。

​ 又是异常重启。。。让人摸不到头脑。 这几天,看到客户上报了重启问题,说是查不出原因。 重启现象是——有极个别设备在工作中不定时反复异常重启,大部分设备正常;反复重启设备,有时候又能持续正常工作。 沟通中很明显感觉到了客户的着急和无奈,必须找出背后原因,解决…