负载平衡(cogs 741)
«问题描述:
G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最
少搬运量可以使n 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。
«编程任务:
对于给定的n 个环形排列的仓库的库存量,编程计算使n 个仓库的库存数量相同的最少
搬运量。
«数据输入:
由文件overload.in提供输入数据。文件的第1 行中有1 个正整数n(n<=100),表示有n
个仓库。第2 行中有n个正整数,表示n个仓库的库存量。
«结果输出:
程序运行结束时,将计算出的最少搬运量输出到文件overload.out中。
输入文件示例 输出文件示例
overload.in
5
17 9 14 16 4
overload.out
11
- /*
- 设A[i]=库存-平均值
- 把点拆成两部分,一部分表示供应节点,一部分表示需求节点。
- 若A[i]>0,S向i连一条容量为A[i],费用为0的边。
- 若A[i]<0,i'向T连一条容量为-A[i],费用为0的边。
- 对与相邻的i和j,i向j'连一条容量为inf,费用为1的边,表示搬过去;
- 同时i向j连一条容量为inf,费用为1的边表示暂时搬过去但不满足需求。
- (也可以先预处理出来最短路,然后直接做。)
- */
- #include<iostream>
- #include<cstdio>
- #include<queue>
- #define N 210
- #define inf 1000000000
- using namespace std;
- int a[N],head[N],dis[N],inq[N],fa[N],n,S,T,cnt=,ans;
- struct node{int v,f,w,pre;}e[N*];
- queue<int> q;
- void add(int u,int v,int f,int w){
- e[++cnt].v=v;e[cnt].f=f;e[cnt].w=w;e[cnt].pre=head[u];head[u]=cnt;
- e[++cnt].v=u;e[cnt].f=;e[cnt].w=-w;e[cnt].pre=head[v];head[v]=cnt;
- }
- bool spfa(){
- if(ans==){
- int aaa=;
- }
- for(int i=;i<=T;i++) dis[i]=inf;
- q.push(S);dis[S]=;
- while(!q.empty()){
- int u=q.front();q.pop();inq[u]=;
- for(int i=head[u];i;i=e[i].pre)
- if(e[i].f&&dis[e[i].v]>dis[u]+e[i].w){
- dis[e[i].v]=dis[u]+e[i].w;
- fa[e[i].v]=i;
- if(!inq[e[i].v]){
- q.push(e[i].v);
- inq[e[i].v]=;
- }
- }
- }
- return dis[T]!=inf;
- }
- void updata(){
- int i=fa[T],x=inf;
- while(i){
- x=min(x,e[i].f);
- i=fa[e[i^].v];
- }
- i=fa[T];
- while(i){
- e[i].f-=x;
- e[i^].f+=x;
- i=fa[e[i^].v];
- }
- ans+=x*dis[T];
- }
- int main(){
- freopen("overload.in","r",stdin);
- freopen("overload.out","w",stdout);
- scanf("%d",&n);int sum=;
- for(int i=;i<=n;i++)
- scanf("%d",&a[i]),sum+=a[i];
- S=;T=n*+;sum/=n;
- for(int i=;i<=n;i++) a[i]-=sum;
- for(int i=;i<=n;i++){
- if(a[i]>) add(S,i,a[i],);
- if(a[i]<) add(i+n,T,-a[i],);
- }
- for(int i=;i<=n;i++){
- int t1=i-,t2=i%n+;
- if(!t1) t1=n;
- add(i,t1,inf,);add(i,t1+n,inf,);
- add(i,t2,inf,);add(i,t2+n,inf,);
- }
- while(spfa())
- updata();
- printf("%d",ans);
- return ;
- }
负载平衡(cogs 741)的更多相关文章
- Windows Server 2008 R2 负载平衡入门篇
一.简单介绍负载均衡 负载均衡也称负载共享,它是指负载均衡是指通过对系统负载情况进行动态调整,把负荷分摊到多个操作节点上执行,以减少系统中因各个节点负载不均衡所造成的影响,从而提高系统的工作效率.在常 ...
- Windows Server 2008R2 配置网络负载平衡(NLB)
目录 配置环境 安装 安装网络负载平衡 安装Web服务器 IIS 配置 测试 其它 配置环境 VMware:(版本10.0.01) 主集群IP:192.168.220.102 VM1:192.168. ...
- Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw
负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...
- windows2003 IIS6网络负载平衡设置
问题 随着计算机技术的不断发展,单台计算机的性能和可靠性越来越高.但现实中还是有许多应用是单台计算机难以达到,例如: 1.银行存储用户数据的数据库服务器必须保证24小时不间断的运转,并在发生严重硬件故 ...
- windows server 2003 负载平衡的详细设置步骤(转载)
声明:本文为转载. 当把一台服务器(包括Web服务器.FTP服务器或者流媒体服务器等等)放入网络中之后,随着客户端数量的不断增加,人们往往需要功能更强大.处理速度更快的服务器.为了解决这个问题,如果将 ...
- windows2003网络负载平衡设置
问题 随着计算机技术的不断发展,单台计算机的性能和可靠性越来越高.但现实中还是有许多应用是单台计算机难以达到,例如: 1.银行存储用户数据的数据库服务器必须保证24小时不间断的运转,并在发生严重硬件故 ...
- Microsoft Azure 负载平衡服务
Microsoft Azure 为在其中托管的虚拟机(IaaS) 和云服务(PaaS) 提供负载平衡服务.负载平衡支持应用程序伸缩,并且提供应用程序故障恢复以及其他优势. 可以通过以下方式访问负 ...
- 2 WAN 和1 Evo/3g Routeros PCC 方法负载平衡
陕西中际现代包装科技:Routeros 2 WAN 和1 Evo/3g PCC 方法负载平衡 (Routeros多线负载平衡) 我们将要讨论2Wan和1个Evo/3G 的负载平衡.负载平衡就是在不同 ...
- 使用nginx负载平衡
1. 介绍 在许多应用中,负载平衡是一种常用的技术来优化利用资源最大化吞吐量,减少等待时间,并确保容错. 可以使用nginx的作为一种非常高效的HTTP负载平衡器,将流量分配到多个应用服务器上提高性能 ...
- 洛谷 P4016负载平衡问题【费用流】题解+AC代码
洛谷 P4016负载平衡问题 P4014 分配问题[费用流]题解+AC代码 负载平衡问题 题目描述 GG 公司有n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n ...
随机推荐
- 更改yum网易、阿里云的yum源
更改yum源为网易的. 首先备份/etc/yum.repos.d/CentOS-Base.repomv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...
- MySQL-Xtrabackup备份还原
前言 通常我们都是使用xtrabackup工具来备份数据库,它是一个专业的备份工具,先来简单介绍下它. Xtrabackup percona提供的mysql数据库备份工具,惟一开源的能够对innodb ...
- Vue2+webpack+node 配置+入门+详解
Vue2介绍 1.vue2.0 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架. Vue 的核心库只关注视图层 采用单文件组件 复杂大型单页应用程序(SPA) 响 ...
- ECMAScript 6入门扩展笔记
字符串扩展 Unicode相关补充 引入"\u{xx}"来表示码点,之前只能表示\u0000-\uffff引入String.fromCodePoint()能正确读取大于uFFFF的 ...
- django实现事务
1.导入模块 from django.db import transaction 2.使用方法 with transaction.atomic(): User.objects.create(name= ...
- A1075 PAT Judge (25)(25 分)
A1075 PAT Judge (25)(25 分) The ranklist of PAT is generated from the status list, which shows the sc ...
- 牛客第四次多校Maximum Mode
链接:https://www.nowcoder.com/acm/contest/142/G来源:牛客网 题目描述 The mode of an integer sequence is the valu ...
- 《鸟哥的Linux私房菜》学习笔记(7)——grep及正则表达式
一.grep命令 grep:根据模式搜索文本,并将符合模式的文本行显示出来 模式:由文本字符和正则表达式的元字符组合成的匹配条件 命令格式:grep [options] [file...] [root ...
- asp.net实现调用ffmpeg实现视频格式的转换
视频格式转换的函数 //视频转换 public void VideoConvertFlv(string FromName, string ExportName) { string ffmpeg = H ...
- IOS开发学习笔记010-面向对象的三大特性
面向对象的三大特性 1.封装 2.继承 3.多态 一.封装 将类内部的属性保护起来,在外部不能直接访问,那么如果需要访问怎么办呢? OC提供了set方法来对成员变量进行访问 set方法 1.作用:提供 ...