CCF模拟题 最优配餐
最优配餐
时间限制: | 1.0s |
内存限制: | 256.0MB |
栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客户(蓝色标注),有一些格点是不能经过的(红色标注)。
方格图中的线表示可以行走的道路,相邻两个格点的距离为1。栋栋要送餐必须走可以行走的道路,而且不能经过红色标注的点。
送餐的主要成本体现在路上所花的时间,每一份餐每走一个单位的距离需要花费1块钱。每个客户的需求都可以由栋栋的任意分店配送,每个分店没有配送总量的限制。
现在你得到了栋栋的客户的需求,请问在最优的送餐方式下,送这些餐需要花费多大的成本。
接下来m行,每行两个整数xi, yi,表示栋栋的一个分店在方格图中的横坐标和纵坐标。
接下来k行,每行三个整数xi, yi, ci,分别表示每个客户在方格图中的横坐标、纵坐标和订餐的量。(注意,可能有多个客户在方格图中的同一个位置)
接下来d行,每行两个整数,分别表示每个不能经过的点的横坐标和纵坐标。
1 1
8 8
1 5 1
2 3 3
6 7 2
1 2
2 2
6 8
前60%的评测用例满足:1<=n<=100。
所有评测用例都满足:1<=n<=1000,1<=m, k, d<=n^2。可能有多个客户在同一个格点上。每个客户的订餐量不超过1000,每个客户所需要的餐都能被送到。
#include <bits/stdc++.h>
#define pii pair<int,int>
#define LL long long
using namespace std;
const int maxn = ;
const int dir[][] = {-,,,-,,,,};
int n,m,k,d,e[maxn][maxn] = {};
struct node {
int x,y,step;
node(int a = ,int b = ,int c = ) {
x = a;
y = b;
step = c;
}
};
queue<node>q;
bool isIn(int x,int y) {
return x > && x <= n && y > && y <= n;
}
LL bfs() {
LL ans = ;
int cnt = ;
while(!q.empty()) {
node now = q.front();
q.pop();
for(int i = ; i < ; ++i) {
int nx = now.x+ dir[i][];
int ny = now.y + dir[i][];
if(isIn(nx,ny)&&!(e[nx][ny]&)) {
e[nx][ny] |= ;
q.push(node(nx,ny,now.step+));
if(e[nx][ny]&) {
ans += (now.step+)*(e[nx][ny]>>);
if(++cnt == k) return ans;
}
}
}
}
return ans;
}
int main() {
int x,y,z;
while(~scanf("%d %d %d %d",&n,&m,&k,&d)) {
for(int i = ; i < m; ++i) {
scanf("%d %d",&y,&x);
q.push(node(x,y,));
e[x][y] |= ;
}
for(int i = ; i < k; ++i) {
scanf("%d %d %d",&y,&x,&z);
e[x][y] = (e[x][y]|) + (z<<);
}
for(int i = ; i < d; ++i) {
scanf("%d %d",&y,&x);
e[x][y] |= ;
}
printf("%I64d\n",bfs());
}
return ;
}
CCF模拟题 最优配餐的更多相关文章
- CCF CSP 201409-4 最优配餐
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-4 最优配餐 问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越 ...
- CCF模拟题 最优灌溉
最优灌溉 时间限制: 1.0s 内存限制: 256.0MB 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需 ...
- CCF 201409-4 最优配餐
问题描述 试题编号: 201409-4 试题名称: 最优配餐 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么 ...
- ACM-最优配餐
题目描述: 最优配餐 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问 ...
- CCF-最优配餐(BFS)
最优配餐 问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题.栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方 ...
- CCF 最优配餐 (BFS)
问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题. 栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的 ...
- 最优配餐_暴力bfs
问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题. 栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的 ...
- CCF模拟题 窗口
窗口 时间限制: 1.0s 内存限制: 256.0MB 问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域.窗口的边界上的点也属于该窗口.窗口之间有层次的 ...
- csp20140904最优配餐_Solution
Solution 经典bfs,所有的点到店的最短距离 其中一开始队列的长度为店的数目 一个点可能有多个订单 关于数据大小: 1.1000*(1000*1000)*2000=2,0000,0000,00 ...
随机推荐
- 从头认识Spring-1.16 SpEl对集合的操作(1)-建立集合以及訪问集合的元素,以<util:list/>为例
这一章节我们来讨论一下怎样建立集合以及訪问集合的元素? 1.建立集合? (1)domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch ...
- zoj 3820 Building Fire Stations (二分+树的直径)
Building Fire Stations Time Limit: 5 Seconds Memory Limit: 131072 KB Special Judge Marjar ...
- Numpy科学计算工具
Numpy初探 Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组 ...
- 文件共享服务器nfs搭建过程
网络文件共享服务器192. yum install -y nfs-utils 在exports文件中添加的从机范围 vim /etc/exports /home/nfs/ (rw,sync,fsid= ...
- CSS W3SCHOOLS
https://www.w3schools.com/csS/css3_buttons.asp
- [洛谷P3929]SAC E#1 - 一道神题 Sequence1
题目大意:给你一串数列,问你能否改变1个数或不改,使它变成波动数列? 一个长度为n的波动数列满足对于任何i(1 <= i < n),均有: a[2i-1] <= a[2i] 且 a[ ...
- write---向指定登录用户终端上发送信息
write命令用于向指定登录用户终端上发送信息.通过write命令可传递信息给另一位登入系统的用户,当输入完毕后,键入EOF表示信息结束,write命令就会将信息传给对方.如果接收信息的用户不只登入本 ...
- 【Codeforces Round #423 (Div. 2) A】Restaurant Tables
[Link]:http://codeforces.com/contest/828/problem/A [Description] 有n个组按照时间顺序来餐馆; 每个组由一个人或两个人组成; 每当有一个 ...
- Xwiki平台Windows搭建(Tomcat7 + XWiki6.2 + MySQL5.5)
背景介绍 国内xwiki安装使用资料较少,根据自己使用xwiki经验,总结出来,供参考,同时希望感兴趣的朋友能够一起讨论,XWiki是一个强大的Java开源的Wiki引擎. 它支持一些受欢迎的特性如: ...
- iOS 卖票中多线程分析;
注意:(主要一个加锁机制)