传送门

费用流经典题目。


自我感觉跟TheWindy′sThe Windy'sTheWindy′s很像。

利用费用提前计算的思想来建图就行了。

代码:

  1. #include<bits/stdc++.h>
  2. #define N 1005
  3. #define M 100005
  4. using namespace std;
  5. inline int read(){
  6. int ans=0;
  7. char ch=getchar();
  8. while(!isdigit(ch))ch=getchar();
  9. while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
  10. return ans;
  11. }
  12. int n,m;
  13. struct edge{int v,w,c,next;};
  14. struct MCMF{
  15. edge e[M<<1];
  16. int first[N],cnt,d[N],flow[N],pred[N],pos[N],q[N],hd,tl,s,t;
  17. bool in[N];
  18. inline void init(){s=0,t=n*m+n+1,memset(first,-1,sizeof(first)),cnt=-1;}
  19. inline void addedge(int u,int v,int c,int w){e[++cnt].v=v,e[cnt].w=w,e[cnt].c=c,e[cnt].next=first[u],first[u]=cnt;}
  20. inline void add(int u,int v,int c,int w){addedge(u,v,c,w),addedge(v,u,0,-w);}
  21. inline bool spfa(){
  22. queue<int>q;
  23. for(int i=1;i<=t;++i)d[i]=0x3f3f3f3f;
  24. memset(in,false,sizeof(in)),d[s]=0,in[s]=1,pred[t]=-1,flow[s]=0x3f3f3f3f,q.push(s);
  25. while(!q.empty()){
  26. int x=q.front();
  27. q.pop(),in[x]=0;
  28. for(int i=first[x];~i;i=e[i].next){
  29. int v=e[i].v;
  30. if(!e[i].c||d[v]<=d[x]+e[i].w)continue;
  31. d[v]=d[x]+e[i].w,pred[v]=x,pos[v]=i,flow[v]=min(flow[x],e[i].c);
  32. if(!in[v])in[v]=1,q.push(v);
  33. }
  34. }
  35. return d[t]!=0x3f3f3f3f;
  36. }
  37. inline void solve(){
  38. int ans=0;
  39. for(int w=t;spfa();w=t){
  40. ans+=d[t];
  41. while(w!=s)e[pos[w]].c-=flow[t],e[pos[w]^1].c+=flow[t],w=pred[w];
  42. }
  43. printf("%.2lf",(double)((double)ans)/((double)n));
  44. }
  45. }mcmf;
  46. int main(){
  47. m=read(),n=read(),mcmf.init();
  48. for(int i=1;i<=n;++i)mcmf.add(mcmf.s,i+n*m,1,0);
  49. for(int i=1;i<=n*m;++i)mcmf.add(i,mcmf.t,1,0);
  50. for(int i=1,v;i<=n;++i){
  51. for(int j=1;j<=m;++j){
  52. v=read();
  53. for(int k=1;k<=n;++k)mcmf.add(i+n*m,(j-1)*n+k,1,v*k);
  54. }
  55. }
  56. mcmf.solve();
  57. return 0;
  58. }

2018.10.13 bzoj1070: [SCOI2007]修车(费用流)的更多相关文章

  1. [BZOJ1070][SCOI2007]修车 费用流

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 6209  Solved: 2641[Submit][Status] ...

  2. [bzoj1070][SCOI2007]修车——费用流

    题目大意: 传送门 题解: 本题和(POJ3686)[http://poj.org/problem?id=3686]一题一模一样,而且还是数据缩小以后的弱化版QAQ,<挑战程序设计竞赛>一 ...

  3. [BZOJ1070] [SCOI2007] 修车 (费用流 & 动态加边)

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...

  4. 【BZOJ1070】[SCOI2007]修车 费用流

    [BZOJ1070][SCOI2007]修车 Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的. ...

  5. bzoj 1070: [SCOI2007]修车 费用流

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2785  Solved: 1110[Submit][Status] ...

  6. P2053 [SCOI2007]修车 费用流

    $ \color{#0066ff}{ 题目描述 }$ 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M ...

  7. 【BZOJ 1070】[SCOI2007]修车 费用流

    就是拆个点限制一下(两点一排一大片),这道题让我注意到了限制这个重要的词.我们跑网络流跑出来的图都是有一定意义的,一般这个意义就对应了问题的一种方案,一般情况下跑一个不知道对不对的方案是相对容易的我们 ...

  8. [SCOI2007]修车 费用流

    ---题面--- 题解: 因为我们并不需要知道准确方案,而人数固定,要使得平均等待时间最小,也就是要使得总的等待时间最小. 因此我们将工人按每个时刻拆点,拆完之后向车子连边,流量为1,费用为k * 维 ...

  9. [SCOI2007]修车 费用流 BZOJ 1070

    题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待 ...

随机推荐

  1. hashlib 加密模块使用说明

    import hashlib  #hashilib 模块 m = hashlib.md5() m.update('hello 天王盖地虎'.encode(encoding = 'utf-8)) m.h ...

  2. Mysql 表名大写 找不到表

    原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lowe ...

  3. 面试题-------SSL协议简介

    SSL协议简介 SSL简介 Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之 ...

  4. HttpClient获取返回类型为JSON或XML的数据

    Java_HttpClient获取返回类型为JSON或XML的数据 原创 2017年04月06日 17:38:29 706 HttpClient 获取返回类型为JSON或XML的数据 使用httpco ...

  5. python的读写和写读操作

    # 读写操作 (读写操作是正常的)f = open('log',mode='r+',encoding='utf-8') # log是文件名 print(f.read()) f.write(" ...

  6. python3 django连接mysql,同步表结构

    第一步:安装PyMySQ代替MySQLdb pip3 install PyMySQL 然后在工程目录的__init__.py中填写下面两句话   import pymysql pymysql.inst ...

  7. Jiu Yuan Wants to Eat(树链剖分+线段树延迟标记)

    Jiu Yuan Wants to Eat https://nanti.jisuanke.com/t/31714 You ye Jiu yuan is the daughter of the Grea ...

  8. Java List/HashSet/HashMap的排序

    在对Java无序类集合,如List(ArrayList/LinkedList).HashSet(TreeSet有序).HashMap等排序时,Java中一个公共的类Collections,提供了对Ja ...

  9. SVN客户端的安装和使用

    ----------------------siwuxie095 SVN 客户端的安装 1.SVN 客户端,选择 TortoiseSVN,下载链接: https://tortoisesvn.net/d ...

  10. 2-Qt关闭子窗口时执行特定代码

    https://blog.csdn.net/naibozhuan3744/article/details/82689434 本文主要总结在关闭qt的QWidget子窗口瞬间,执行特定代码.由于主窗口关 ...