[HB2014 Week5] Allot 人员分配
这两天决心专门搞好网络流了 - -
题解在什么瞎胡搞跟我说要连n+2和n+1容量为无穷的边…我看了下std才做的…
坑死人的地方就是,需要求多次网络流,每次别忘了把流给清空了…这次是用链表所以专门写了一个clearflow过程,如果是静态链表就可以fillchar了…
program allot2;
type ptype=^node;
node=record
v,w,flow:longint;
next:ptype;
end;
const maxn=+;
inf=maxlongint;
var m,n,k,i,j,x,y,l,mid,r,sta,tar:longint;
head:array[..maxn] of ptype;
q,d:array[..maxn] of longint;
visit:array[..maxn] of boolean;
function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; procedure insert(st,ed,r:longint);
var p,q,pre:ptype;
begin
//if (st=n+) or (st=n+) then r:=inf;
//if (ed=n+) or (ed=n+) then r:=;
new(p);new(q);
p^.v:=ed;p^.w:=r;p^.flow:=;p^.next:=nil;
q:=head[st];
if q=nil then
begin
new(head[st]);
head[st]^:=p^;
end
else
begin
while q<>nil do
begin
pre:=q;q:=q^.next;
end;
new(q);
q^:=p^;
pre^.next:=q;
end;
end; procedure decflow(st,ed,delta:longint);
var x,y:ptype;
begin
y:=head[st];
while y^.v<>ed do y:=y^.next;
y^.flow:=y^.flow-delta;
end; function bfs:boolean;
var star,rear,x:longint;
y:ptype;
begin
fillchar(visit,sizeof(visit),false);
fillchar(q,sizeof(q),);
fillchar(d,sizeof(d),);
star:=;rear:=;q[star]:=sta;visit[sta]:=true;d[star]:=;
while star<=rear do
begin
x:=q[star];
y:=head[x];
while y<>nil do
begin
if (visit[y^.v]=false) and (y^.w>y^.flow) then
begin
inc(rear);
q[rear]:=y^.v;
visit[y^.v]:=true;
d[y^.v]:=d[x]+;
end;
y:=y^.next;
end;
inc(star);
end;
bfs:=visit[tar];
end; function addflow(p,maxflow:longint):longint;
var x,y:ptype;
o:longint;
begin
if (p=tar) or (maxflow=) then exit(maxflow);
y:=head[p];addflow:=;
while y<>nil do
begin
if (d[y^.v]=d[p]+) and (y^.w>y^.flow) then
begin
o:=addflow(y^.v,min(maxflow,y^.w-y^.flow));
if o> then
begin
inc(y^.flow,o);
decflow(y^.v,p,o);
inc(addflow,o);
dec(maxflow,o);
if maxflow= then break; //!
end;
end;
y:=y^.next;
end;
end; function network:longint;
begin
network:=;
while bfs do
inc(network,addflow(sta,inf));
end; procedure clearflow; //!
var i,j:longint;
y:ptype;
begin
for i:= to n+ do
begin
y:=head[i];
while y<>nil do
begin
y^.flow:=;
y:=y^.next;;
end;
end;
end; begin
assign(input,'allot9.in');reset(input);
assign(output,'allot9.out');rewrite(output);
readln(n,m,k);
//build_graph;
for i:= to m do
begin
readln(x,y,l,mid,r);
insert(y,x,mid-l);
insert(x,y,r-mid);
end;
insert(n+,n+,inf);insert(n+,n+,);
insert(n+,n+,inf);insert(n+,n+,);
//main
sta:=n+;
for i:= to n do
begin
clearflow;
tar:=i;
if network>=k then writeln('') else writeln('');
end;
end.
allot
自己写网络流的时候忘记了if maxflow=0 then exit这句了,虽然不影响结果但是会影响速度。
自己电脑上跑有点慢,又不知道哪儿的OJ有…Sigh…
[HB2014 Week5] Allot 人员分配的更多相关文章
- NEWBEE软件团队 人员分配情况及分数获得方式
人员分配: PM:李桐 王骜 dev:王骜 刘垚鹏 安康 林旭鹏 黄新越 test:黄伟龙 李桐 马佐霖 黄新越 注:黄新越为女生,不方便平时的交流,所以任务分配较为灵活,特分在两个组里. 评分 ...
- 项目管理目标:添加人员并向其分配任务 - Project
已剪辑自: https://support.office.com/zh-cn/article/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E7%9B%AE%E6%A0%8 ...
- 【软件工程-Teamwork 3】团队角色分配和团队贡献分分配规则
Part 1 团队角色分配 1.人员分配概要: Project Manager:1名 / Developer:4名 / Test: 1名 2.具体人员分配及职责: Project Manager(PM ...
- No.10_分数分配
C#队一共有7名成员,因此团队贡献分一共350分. 分配方式应当反映绝大部分组员的真实贡献情况,即由贡献决定分数. 另外保证一定的奖惩措施,充分调动组员的积极性,鞭策团队向前迈进. 对于团队贡献分数的 ...
- HR*创建人员要素链接
HRMS(Human Resource Management System) --人员 per_people_f --人员分配 per_all_assignments_f --要素 DECLARE l ...
- 【JeeSite】角色分配
主要是(roleAssign.jsp , selectUserToRole.jsp )2个jsp页面的JS方法调用比较复杂,主页面要获取弹窗页面的数据 var pre_ids = h.find(&qu ...
- Goodbye2014,Hello2015
正如我在研发会议上说的,总结是为了更好的计划:而计划,则是让你做事有目标,有方向:有了目标和方向,你才能真正把事情做成! 总的来说2014年可以归纳为下图: 2014年总结 一年的活动,基本可以归纳为 ...
- PMP备考_第六章_项目时间管理
项目时间管理 前言 项目时间管理是项目管理中最难的一个环节,与个人时间管理类似,团体的效率如果管理不当,是低于个人效率的,为了管理好时间,从预估,执行到反馈均需要严格的分析和处理.如果制定的计划是无法 ...
- Daily Scrum02 12.11
今天的会议的主要内容基本是解决界面组的问题,原本开始进行人员分配的时候没有考虑到要花特别长的时间为美化界面整理素材,且由于进行素材PS的同学的时间安排问题,和不熟练,很久没有将素材准备这项任务完成.因 ...
随机推荐
- 微信中修改title
//需要jQuery.zepto版 function weixinTitle(){ var $body = $('body'); document.title = 'title'; // hack在微 ...
- this的面面观
http://www.cnblogs.com/Wayou/p/all-this.html <JavaScript语言精粹> 全局this 浏览器宿主的全局环境中, function f(x ...
- 【request_firmware】 linux内核下载模块固件接口【转】
转自:http://blog.csdn.net/magod/article/details/6049558 [-] 8 处理固件 1481 内核固件接口 1482 它如何工作 14.8. 处理固件 作 ...
- Ugly Number
public class Solution { public bool IsUgly(int num) { ) return false; ) return true; *==num){ num = ...
- transient
“transient”——“瞬态”,先不说这个翻译是否恰当,这个变量关键字一直不曾使用,简单的说就是被瞬态定义的变量不可序列号.或者这么给他换个名字——“不可序列化状态”.打个比方,如果一个用户有一些 ...
- 20160622001 GridView 删除列 用模板实现删除时提示确认框
GridView在使用CommandField删除时弹出提示框,在.net2005提供的GridView中我们可以直接添加一个 CommandField删除列:<asp:CommandField ...
- ubuntu环境极其内存情况
001:安装系统后 002:synergy 003:vim-cscope (修改vim脚本) 004:root 005:bashrc修改 006:bcompare 007:lib 008:git,gi ...
- 【iOS】我的Objective-C学习笔记
1.代码中增加标记 #pragma mark - #pragma mark 2.点语法 Person *p = [Person new]; // 点语法的本质还是方法调用 p.age = 10; // ...
- jQuery判断当前元素是第几个元素
$("ul li").click(function () { var index = $("ul li").index(this); alert(index); ...
- C#MVC使用二进制流显示图片
关于显示图片的最好方法当然是img 的src直接指向地址,简单实用.但是有时候也会使用到使用图片流显示图片的方法.实现也比较简单(在C# mvc中,java的不了解).具体如下: 1.前台cshtml ...