«问题描述:
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

  1. /*
  2. 设A[i]=库存-平均值
  3. 把点拆成两部分,一部分表示供应节点,一部分表示需求节点。
  4. 若A[i]>0,S向i连一条容量为A[i],费用为0的边。
  5. 若A[i]<0,i'向T连一条容量为-A[i],费用为0的边。
  6. 对与相邻的i和j,i向j'连一条容量为inf,费用为1的边,表示搬过去;
  7. 同时i向j连一条容量为inf,费用为1的边表示暂时搬过去但不满足需求。
  8. (也可以先预处理出来最短路,然后直接做。)
  9. */
  10. #include<iostream>
  11. #include<cstdio>
  12. #include<queue>
  13. #define N 210
  14. #define inf 1000000000
  15. using namespace std;
  16. int a[N],head[N],dis[N],inq[N],fa[N],n,S,T,cnt=,ans;
  17. struct node{int v,f,w,pre;}e[N*];
  18. queue<int> q;
  19. void add(int u,int v,int f,int w){
  20. e[++cnt].v=v;e[cnt].f=f;e[cnt].w=w;e[cnt].pre=head[u];head[u]=cnt;
  21. e[++cnt].v=u;e[cnt].f=;e[cnt].w=-w;e[cnt].pre=head[v];head[v]=cnt;
  22. }
  23. bool spfa(){
  24. if(ans==){
  25. int aaa=;
  26. }
  27. for(int i=;i<=T;i++) dis[i]=inf;
  28. q.push(S);dis[S]=;
  29. while(!q.empty()){
  30. int u=q.front();q.pop();inq[u]=;
  31. for(int i=head[u];i;i=e[i].pre)
  32. if(e[i].f&&dis[e[i].v]>dis[u]+e[i].w){
  33. dis[e[i].v]=dis[u]+e[i].w;
  34. fa[e[i].v]=i;
  35. if(!inq[e[i].v]){
  36. q.push(e[i].v);
  37. inq[e[i].v]=;
  38. }
  39. }
  40. }
  41. return dis[T]!=inf;
  42. }
  43. void updata(){
  44. int i=fa[T],x=inf;
  45. while(i){
  46. x=min(x,e[i].f);
  47. i=fa[e[i^].v];
  48. }
  49. i=fa[T];
  50. while(i){
  51. e[i].f-=x;
  52. e[i^].f+=x;
  53. i=fa[e[i^].v];
  54. }
  55. ans+=x*dis[T];
  56. }
  57. int main(){
  58. freopen("overload.in","r",stdin);
  59. freopen("overload.out","w",stdout);
  60. scanf("%d",&n);int sum=;
  61. for(int i=;i<=n;i++)
  62. scanf("%d",&a[i]),sum+=a[i];
  63. S=;T=n*+;sum/=n;
  64. for(int i=;i<=n;i++) a[i]-=sum;
  65. for(int i=;i<=n;i++){
  66. if(a[i]>) add(S,i,a[i],);
  67. if(a[i]<) add(i+n,T,-a[i],);
  68. }
  69. for(int i=;i<=n;i++){
  70. int t1=i-,t2=i%n+;
  71. if(!t1) t1=n;
  72. add(i,t1,inf,);add(i,t1+n,inf,);
  73. add(i,t2,inf,);add(i,t2+n,inf,);
  74. }
  75. while(spfa())
  76. updata();
  77. printf("%d",ans);
  78. return ;
  79. }

负载平衡(cogs 741)的更多相关文章

  1. Windows Server 2008 R2 负载平衡入门篇

    一.简单介绍负载均衡 负载均衡也称负载共享,它是指负载均衡是指通过对系统负载情况进行动态调整,把负荷分摊到多个操作节点上执行,以减少系统中因各个节点负载不均衡所造成的影响,从而提高系统的工作效率.在常 ...

  2. Windows Server 2008R2 配置网络负载平衡(NLB)

    目录 配置环境 安装 安装网络负载平衡 安装Web服务器 IIS 配置 测试 其它 配置环境 VMware:(版本10.0.01) 主集群IP:192.168.220.102 VM1:192.168. ...

  3. Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw

    负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...

  4. windows2003 IIS6网络负载平衡设置

    问题 随着计算机技术的不断发展,单台计算机的性能和可靠性越来越高.但现实中还是有许多应用是单台计算机难以达到,例如: 1.银行存储用户数据的数据库服务器必须保证24小时不间断的运转,并在发生严重硬件故 ...

  5. windows server 2003 负载平衡的详细设置步骤(转载)

    声明:本文为转载. 当把一台服务器(包括Web服务器.FTP服务器或者流媒体服务器等等)放入网络中之后,随着客户端数量的不断增加,人们往往需要功能更强大.处理速度更快的服务器.为了解决这个问题,如果将 ...

  6. windows2003网络负载平衡设置

    问题 随着计算机技术的不断发展,单台计算机的性能和可靠性越来越高.但现实中还是有许多应用是单台计算机难以达到,例如: 1.银行存储用户数据的数据库服务器必须保证24小时不间断的运转,并在发生严重硬件故 ...

  7. Microsoft Azure 负载平衡服务

     Microsoft Azure 为在其中托管的虚拟机(IaaS) 和云服务(PaaS) 提供负载平衡服务.负载平衡支持应用程序伸缩,并且提供应用程序故障恢复以及其他优势. 可以通过以下方式访问负 ...

  8. 2 WAN 和1 Evo/3g Routeros PCC 方法负载平衡

    陕西中际现代包装科技:Routeros  2 WAN 和1 Evo/3g PCC 方法负载平衡 (Routeros多线负载平衡) 我们将要讨论2Wan和1个Evo/3G 的负载平衡.负载平衡就是在不同 ...

  9. 使用nginx负载平衡

    1. 介绍 在许多应用中,负载平衡是一种常用的技术来优化利用资源最大化吞吐量,减少等待时间,并确保容错. 可以使用nginx的作为一种非常高效的HTTP负载平衡器,将流量分配到多个应用服务器上提高性能 ...

  10. 洛谷 P4016负载平衡问题【费用流】题解+AC代码

    洛谷 P4016负载平衡问题 P4014 分配问题[费用流]题解+AC代码 负载平衡问题 题目描述 GG 公司有n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n ...

随机推荐

  1. 更改yum网易、阿里云的yum源

    更改yum源为网易的. 首先备份/etc/yum.repos.d/CentOS-Base.repomv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...

  2. MySQL-Xtrabackup备份还原

    前言 通常我们都是使用xtrabackup工具来备份数据库,它是一个专业的备份工具,先来简单介绍下它. Xtrabackup percona提供的mysql数据库备份工具,惟一开源的能够对innodb ...

  3. Vue2+webpack+node 配置+入门+详解

    Vue2介绍 1.vue2.0 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架. Vue 的核心库只关注视图层 采用单文件组件 复杂大型单页应用程序(SPA) 响 ...

  4. ECMAScript 6入门扩展笔记

    字符串扩展 Unicode相关补充 引入"\u{xx}"来表示码点,之前只能表示\u0000-\uffff引入String.fromCodePoint()能正确读取大于uFFFF的 ...

  5. django实现事务

    1.导入模块 from django.db import transaction 2.使用方法 with transaction.atomic(): User.objects.create(name= ...

  6. A1075 PAT Judge (25)(25 分)

    A1075 PAT Judge (25)(25 分) The ranklist of PAT is generated from the status list, which shows the sc ...

  7. 牛客第四次多校Maximum Mode

    链接:https://www.nowcoder.com/acm/contest/142/G来源:牛客网 题目描述 The mode of an integer sequence is the valu ...

  8. 《鸟哥的Linux私房菜》学习笔记(7)——grep及正则表达式

    一.grep命令 grep:根据模式搜索文本,并将符合模式的文本行显示出来 模式:由文本字符和正则表达式的元字符组合成的匹配条件 命令格式:grep [options] [file...] [root ...

  9. asp.net实现调用ffmpeg实现视频格式的转换

    视频格式转换的函数 //视频转换 public void VideoConvertFlv(string FromName, string ExportName) { string ffmpeg = H ...

  10. IOS开发学习笔记010-面向对象的三大特性

    面向对象的三大特性 1.封装 2.继承 3.多态 一.封装 将类内部的属性保护起来,在外部不能直接访问,那么如果需要访问怎么办呢? OC提供了set方法来对成员变量进行访问 set方法 1.作用:提供 ...