详见BYV的博客,写的非常全面https://www.byvoid.com/blog/noi-2008-employee

/**************************************************************Problem: 1061User: BLADEVILLanguage: PascalResult: AcceptedTime:1496 msMemory:1028 kb
****************************************************************///By BLADEVIL
varn, m                        :longint;pre, other, len, cost       :array[0..50010] of longint;last                        :array[0..2010] of longint;l                           :longint;source, sink                :longint;ans                         :longint;flag                        :array[0..1020] of boolean;dis, que, father            :array[0..1020] of longint; function min(a,b:longint):longint;
beginif a>b then min:=b else min:=a;
end;procedure connect(a,b,c,d:longint);
begin  inc(l);pre[l]:=last[a];last[a]:=l;other[l]:=b;len[l]:=c;cost[l]:=d;
end;procedure init;
vari                           :longint;x, y, z                     :longint;beginread(n,m);source:=n+2; sink:=source+1;x:=0;l:=1;for i:=1 to n dobeginread(y);if y-x>0 thenbeginconnect(source,i,y-x,0);connect(i,source,0,0);end elsebeginconnect(i,sink,x-y,0);connect(sink,i,0,0);end;x:=y;end;connect(n+1,sink,x,0);connect(sink,n+1,0,0);for i:=1 to m dobeginread(x,y,z);connect(x,y+1,maxlongint div 10,z);connect(y+1,x,0,-z);end;for i:=2 to n+1 dobeginconnect(i,i-1,maxlongint div 10,0);connect(i-1,i,0,0);end;
end;function spfa:boolean;
varh, t, cur                   :longint;q, p                        :longint;
beginfilldword(dis,sizeof(dis) div 4,maxlongint div 10);que[1]:=source;dis[source]:=0;h:=0; t:=1;while t<>h dobeginh:=h mod 1010+1;cur:=que[h];flag[cur]:=false;q:=last[cur];while q<>0 dobeginp:=other[q];if len[q]>0 thenif dis[p]>dis[cur]+cost[q] thenbeginfather[p]:=q;dis[p]:=dis[cur]+cost[q];if not flag[p] thenbegint:=t mod 1010+1;que[t]:=p;flag[p]:=true;end;end;q:=pre[q];end;end;if dis[sink]=maxlongint div 10 then exit(false) else exit(true);
end;procedure update;
varlow, cur                    :longint;
begincur:=sink;low:=maxlongint;while cur<>source dobeginlow:=min(low,len[father[cur]]);cur:=other[father[cur] xor 1];end;cur:=sink;while cur<>source dobegindec(len[father[cur]],low);inc(len[father[cur] xor 1],low);ans:=ans+low*cost[father[cur]];cur:=other[father[cur] xor 1];end;
end;procedure main;
beginwhile spfa doupdate;writeln(ans);
end;begininit;main;
end.

转载于:https://www.cnblogs.com/BLADEVIL/p/3485014.html

bzoj 1061 志愿者招募 费用流相关推荐

  1. 洛谷P3980 志愿者招募——费用流

    洛谷P3980 [NOI2008]志愿者招募--费用流 题目介绍 题目描述 输入格式 输出格式 测试样例 题解 代码 题目介绍 题目描述 链接: 传送门. 申奥成功后,布布经过不懈努力,终于成为奥组委 ...

  2. BZOJ 1061 志愿者招募(最小费用最大流)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1061 题意:申奥成功后,布布经过不懈努力,终于 成为奥组委下属公司人力资源部门的主管.布 ...

  3. bzoj 1061 志愿者招募

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec   Memory Limit: 162 MB Submit: 3038   Solved: 1882 [ Submit] ...

  4. [Bzoj1061][Noi2008]志愿者招募(费用流)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1061 一开始疯狂想dp,然后队友走过来瞄一眼就告诉我像费用流,菜的真实,jpg. 一种比 ...

  5. BZOJ.2597.[WC2007]剪刀石头布(费用流zkw)

    BZOJ 洛谷 \(Description\) 给定一张部分边方向已确定的竞赛图.你需要给剩下的边确定方向,使得图中的三元环数量最多. \(n\leq100\). \(Solution\) 这种选择之 ...

  6. BZOJ.3265.志愿者招募加强版(费用流SPFA)

    题目链接 见上题. 每类志愿者可能是若干段,不满足那个...全幺模矩阵(全单位模矩阵)的条件,所以线性规划可能存在非整数解. 于是就可以用费用流水过去顺便拿个rank2 233. //20704kb ...

  7. BZOJ 3265 志愿者招募加强版 单纯形

    题目大意:同1061 不过每类志愿者能工作的区间是多段 这是卡网络流?不明 总之把1061稍微改改就能过了- - #include <cmath> #include <cstdio& ...

  8. BZOJ 2696 航班安排 费用流

    题目大意:K架飞机,N个机场,以0..N-1编号,其中0号为基地机场,每天0时刻起飞机从该机场起飞,并不晚于T时刻回到该机场.M个包机请求,每个请求为在s时刻从a机场起飞,在恰好t时刻到达b机场,可以 ...

  9. BZOJ 2879 美食节(费用流-动态加边)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2879 题意:有n道菜,每道菜需要b[i]份,m个厨师,第j个厨师做第i道菜需要时间a[i ...

最新文章

  1. 不同级域名中的 Cookie 共享
  2. An internal error occurred during: quot;J2EE Component Mapping Updatequot;.
  3. HTTPSession对象知识总结
  4. python程序流程控制_python流程控制
  5. java 封装 继承 堕胎_Java的继承、封装和多态
  6. BZOJ2286 : [Sdoi2011]消耗战
  7. npm install 卡住的时候的处理
  8. osgearth_annotation示例
  9. java 批量替换字符串_# Java 一步一步实现高逼格的字符串替换工具(二)
  10. restapi如何传图片_如何设计restful风格接口
  11. bat 调用class文件_[Golang实现JVM第五篇]静态方法调用的实现
  12. 红绿3d眼镜与红蓝3d眼镜区别_佩极定制眼镜青少年3D打印定制系列全新发布
  13. 【图像去噪】基于matlab维纳滤波图像去噪【含Matlab源码 725期】
  14. 多重加载Bean方式
  15. php api接口怎么写,php如何写api接口?
  16. iphone换android手机铃声,在iPhone中换个自定义铃声的11个步骤
  17. 计算机网络(谢希仁第七版)期末重点
  18. 开发指南专题六:JEECG微云快速开发平台代码生成
  19. matlab将图片旋转的代码_空间曲线绕空间直线旋转生成的旋转曲面方程
  20. 玫瑰c语言程序教程,c语言如何实现玫瑰花

热门文章

  1. MKcms4.4.3仿品优影视网站系统完整开源版自动采集可设置视频收费
  2. 城市APP集成Firebase/Admob/增强现实带PHP管理后台
  3. 详细介绍mysql-bin.000001文件的来源及处理方法
  4. pureftpd 如何修改管理员密码
  5. Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
  6. Node.js: 如何继承 events 自定义事件及触发函数
  7. iTerm – 让你的命令行也能丰富多彩
  8. 使用Google OAuth 2.0存取Google API (Google Client ID)
  9. PHP中MySQL、MySQLi和PDO的用法和区别
  10. JavaScript 字符串转换数字