NYOJ1367 物流配送

题目描述:

物流配送是物流活动中一种非单一的业务形式,它与物品流动、资金流动紧密结合。备货是配送的准备工作或基础工作,备货工作包括筹集货源、订货或购货、集货、进货及有关的质量检查、结算、交接等。配送的优势之一,就是可以集中用户的需求进行一定规模的备货。备货是决定配送成败的初期工作,如果备货成本太高,会大大降低配送的效益。配送中的储存有储备及暂存两种形态。配送储备是按一定时期的配送经营要求,形成的对配送的资源保证。这种类型的储备数量较大,储备结构也较完善,视货源及到货情况,可以有计划地确定周转储备及保险储备结构及数量。

Dr. Kong 所在的研究团队准备为Hai-E集团开发一个物流配送管理系统。已知Hai-E集团已经在全国各地建立了n个货物仓库基地,任意两个基地的货物可以相互调配。现在需要根据用户订货要求,来重新调配每个基地的货物数量。为了节流开源,希望对整个物流配送体系实行统一的货物管理和调度,能够提供一个全面完善的物流仓储配送解决方案,以减少物流配送过程中成本、人力、时间。

输入描述:

第一行:   n             (1 ≤ n ≤ 1000)

第2行:   a1  a2 …… an    表示n个基地当前的物品数量             (0≤ ai ≤ 106 )

第3行:   b1  b2 …… bn   表示调配后,每个基地i应不少于bi个物品  (0≤ bi ≤ 106)

接下来n-1行,每行三个整数: i  j  k 表示从第i基地调配一个物品到第j基地需要花费为k,或 从第j基地调配一个物品到第i基地需要花费为k。(0≤ k ≤ 10^6)

输出描述:

输出配送后的最小费用。

已知: a1+a2+…+an >=b1+b2+…+bn

样例输入:

复制

6
0 1 2 2 0 0
0 0 1 1 1 1
1 2 2
1 3 5
1 4 1
2 5 5
2 6 1

样例输出:

9

提示:

来源:

河南省第十一届ACM大学生程序设计竞赛

思路:裸的最小费用最大流。 a_i 连 S, b_i连T, 流量为权值,费用为0。 其他边流量为inf,费用w_i 。测试模板

  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 typedef long long ll;
  4 const int maxn=10000;
  5 const int maxm=100000;
  6 const int inf=0x3f3f3f3f;
  7 struct Edge{
  8     ll to,next,cap,flow,cost;
  9 }edge[maxm];
 10
 11 int head[maxn],tol;
 12 int pre[maxn],dis[maxn];
 13 bool vis[maxn];
 14 int N;
 15 void init(int n) {
 16     N=n;
 17     tol=0;
 18     memset(head,-1,sizeof(head));
 19 }
 20
 21 void addedge(int u,int v,ll cap,ll cost) {
 22     edge[tol].to=v;
 23     edge[tol].cap=cap;
 24     edge[tol].cost=cost;
 25     edge[tol].flow=0;
 26     edge[tol].next=head[u];
 27     head[u]=tol++;
 28     edge[tol].to=u;
 29     edge[tol].cap=0;
 30     edge[tol].cost=-cost;
 31     edge[tol].flow=0;
 32     edge[tol].next=head[v];
 33     head[v]=tol++;
 34 }
 35
 36 bool spfa(int s,int t) {
 37     queue<int> q;
 38     for(int i=0;i<N;i++) {
 39         dis[i]=inf;
 40         vis[i]=false;
 41         pre[i]=-1;
 42     }
 43     dis[s]=0;
 44     vis[s]=true;
 45     q.push(s);
 46     while(!q.empty()) {
 47         int u=q.front();
 48         q.pop();
 49         vis[u]=false;
 50         for(int i=head[u];i!=-1;i=edge[i].next) {
 51             int v=edge[i].to;
 52             if(edge[i].cap>edge[i].flow&&dis[v]>dis[u]+edge[i].cost) {
 53                 dis[v]=dis[u]+edge[i].cost;
 54                 pre[v]=i;
 55                 if(!vis[v]) {
 56                     vis[v]=true;
 57                     q.push(v);
 58                 }
 59             }
 60         }
 61     }
 62     if(pre[t]==-1) return false;
 63     return true;
 64 }
 65
 66 int minCostMaxflow(int s,int t,ll &cost) {
 67     int flow=0;
 68     cost=0;
 69     while(spfa(s,t)) {
 70         int Min=inf;
 71         for(int i=pre[t];i!=-1;i=pre[edge[i^1].to]) {
 72             if(Min>edge[i].cap-edge[i].flow)
 73                 Min=edge[i].cap-edge[i].flow;
 74         }
 75         for(int i=pre[t];i!=-1;i=pre[edge[i^1].to]) {
 76             edge[i].flow+=Min;
 77             edge[i^1].flow-=Min;
 78             cost+=edge[i].cost*Min;
 79         }
 80         flow+=Min;
 81     }
 82     return flow;
 83 }
 84
 85 int n;
 86 int main() {
 87     while(~scanf("%d",&n)) {
 88         init(n+2);
 89         int x;
 90         for(int i=1;i<=n;i++) {
 91             scanf("%d",&x);
 92             addedge(0,i,x,0);
 93             addedge(i,0,0,0);
 94         }
 95         for(int i=1;i<=n;i++) {
 96             scanf("%d",&x);
 97             addedge(i,n+1,x,0);
 98             addedge(n+1,i,0,0);
 99         }
100         for(int i=1;i<=n-1;i++) {
101             int u,v,cost;
102             scanf("%d%d%d",&u,&v,&cost);
103             addedge(u,v,inf,cost);
104             addedge(v,u,inf,cost);
105         }
106         ll cost=0;
107         minCostMaxflow(0,n+1,cost);
108         printf("%lld\n",cost);
109     }
110 }

原文地址:https://www.cnblogs.com/ACMerszl/p/10817188.html

时间: 2024-10-29 02:35:25

NYOJ1367 物流配送的相关文章

使用Facade模式更新库存、确认订单、采取打折、确认支付、完成支付、物流配送

Facade模式对外提供了统一的接口,而隐藏了内部细节.在网上购物的场景中,当点击提交订单按钮,与此订单相关的库存.订单确认.折扣.确认支付.完成支付.物流配送等都要做相应的动作.本篇尝试使用Facade模式,把这些类似工作者单元的动作隐藏到一类中,只要点击提交订单,余下的事情一步到位: □ 关于库存 namespace ConsoleApplication1.Interfaces { public interface IInventory { void Update(int productId

物流配送系统

实现一个物流配送系统的货物分配以及运输路线的数据结构实验.从一个始发站向周围用卡车运送货物,是运送路线尽量达到最优,运送的成本(卡车数量尽量少)尽量达到最小,利用计算机完成相应计算并给出相应的送货方案.将路径问题看成一个旅行商问题,用贪心策略先求出路径,然后继续用贪心策略装货物并用车配送. #include <iostream> #include<string.h> #include<vector> #include<queue> #include<a

BOS项目 第11天(activiti工作流第三天,流程实例管理、项目中的用户和角色同步到activiti的用户和组表、设计物流配送流程、启动物流配送流程、组任务操作(查询、拾取)、个人任务操作(查询、办理))

BOS项目笔记 第11天 今天内容安排: 1.流程实例管理(查询.查看运行状态) 2.将bos系统中的用户和角色同步到activiti的用户和组表 3.设计物流配送流程 4.启动物流配送流程 5.组任务操作(查询.拾取) 6.个人任务操作(查询.办理) 1. 流程实例管理 1.1 查询流程实例列表 第一步:创建一个流程实例管理Action,提供list方法,查询流程实例列表数据 第二步:配置struts.xml 第三步:提供processinstance.jsp页面,展示列表数据 <s:iter

框架 day58 BOS项目练习(基于activiti物流配送流程,启动,查询,办理,项目知识点复习)

BOS项目笔记第12天 内容: 1.设计物流配送流程 2.启动物流配送流程 3.查询组任务.拾取组任务 4.查询个人任务.办理个人任务 1.    设计物流配送流程     物流配送流程 基于组任务进行任务分配.使用排他网关,分支选择使用流程变量实现 Activiti图形界面中: Process的Id值 对应流程定义表中的key值,可以用于启动最新版本的流程实例 任务节点中: General的 Id值对应任务表中的Task_def_key既 taskDefinitionKey值,用于定义项目中

asp.net294物流配送系统

转载于我帮你毕业设计  QQ 97095639 需要详细资料和演示的可以去 www.hongtaibysj.com 查看 一.技术实现: 开发语言: asp.net, 框架: mvc ,模式:B/S 数据库 : sqlserver , 开发工具: vs sqlserver . 论文字数:1万左右. 二.功能实现: 物流管理系统是一个典型的数据库管理系统,系统由基本信息设置.订单管理.快件管理.库存管理.系统管理等模块组成,规划系统功能模块如下:     基本信息设置模块 该模块主要负责完成部门资

物流配送进程快递100查询接口

本插件使得您的网站可以从快递100接口获取相关配送公司的订单的具体进程,并在顾客登录网站时,查看订单详细信息时予以显示. 演示前台: http://coc020.chinaopencart.com 用户名: [email protected] 密码: demo 使用以上信息登录网站前台,查看订单信息,会看到相关快递100接口传送回来的快递进程.

物流配送管理系统(ssm,mysql)

项目演示视频观看地址:https://www.toutiao.com/i6811872614676431371/ 下载地址: 51document.cn 可以实现数据的图形展示.报表展示.报表的导出.打印. 1.仓储数据分析: 将2018年12月1日青岛仓出库量与 1. 仓储主题 仓库分为冷冻仓和冷藏仓,仓库地点至少三个,一个地点有多个冷冻仓和冷藏仓.时间为日.月.季度.年.商品为具体的生鲜产品.仓库设置仓库维度.时间维度.商品维度对数据进行查看. 实现数据的同比分析和环比分析. 除上图外,至少

物流配送记录删除

将相关单据的pf_ckhx中的is_zx更新为否,再删除xshz_mx和xshz_hx中的相关数据 update pf_ckhz set is_zx='否' where djbh in ('XSAYMA00036212','XSAYMA00036208','XSAYMA00036211','XSAYMA00036209','XSAYMA00036210') delete xshz_mx where djbh in ('XHZYMA00023714','XHZYMA00023712','XHZYM

书乐说:京东阿里猫狗大战 嘴炮只为物流天下谁更强?

在新近播出的央视<对话>栏目中,京东集团CEO刘强东评价了京东物流的竞争对手菜鸟网络,他称菜鸟网络本质还是要在几个快递公司之上,搭建数据系统,最后,几家快递公司的大部分利润,都会被菜鸟物流吸走.菜鸟网络新闻发言人则很快回应称,"一家没有平台共享思维的企业,眼界只能停留榨取合作伙伴利润养活自己上,不可能理解赋能伙伴.提升行业.繁荣生态的意义." 嘴炮大战,不是吵给消费者看 对于京东(吉祥物是狗)和菜鸟(天猫就是只猫)在物流上的"猫狗大战"互掐,笔者和每日经