最小费用流真慢啊

刚学了zkw的那个最小费用流算法,想不到在这里用上了。

不过时间有点小微:

在Vag 6K上:

编译通过...

├ 测试数据 01:运行超时...

├ 测试数据 02:运行超时...

├ 测试数据 03:答案正确... 680ms

├ 测试数据 04:运行超时...

├ 测试数据 05:运行超时...

├ 测试数据 06:答案正确... 524ms

├ 测试数据 07:运行超时...

├ 测试数据 08:运行超时...

├ 测试数据 09:运行超时...

├ 测试数据 10:运行超时...

---|---|---|---|---|---|---|---|-

Unaccepted 有效得分:20 有效耗时:1204ms

在Puppy上:

编译通过...

├ 测试数据 01:答案正确... 728ms

├ 测试数据 02:答案正确... 541ms

├ 测试数据 03:答案正确... 25ms

├ 测试数据 04:答案正确... 197ms

├ 测试数据 05:答案正确... 525ms

├ 测试数据 06:答案正确... 41ms

├ 测试数据 07:答案正确... 619ms

├ 测试数据 08:答案正确... 166ms

├ 测试数据 09:答案正确... 369ms

├ 测试数据 10:答案正确... 400ms

---|---|---|---|---|---|---|---|-

Accepted 有效得分:100 有效耗时:3611ms

这题卡时间啊。。。。。

大家碰不到puppy就别交了。。。

附上源代码:

program problem;

var

en,et,ec,eu,ep,ex:Array[0..250000] of longint;

dis:array[0..1000] of longint;

v:array[0..1000] of boolean;

i,j,k,n,m,w,cost,l:longint;

a,b,ans,left,right:longint;

function min(a,b:longint):longint;

begin

if a0)and not v[et[i]] and(dis[et[i]]+ec[i]=dis[no]) then

begin

d:=aug(et[i],min(m,eu[i]));

if d>0 then

begin

dec(eu[i],d);

inc(eu[ep[i]],d);

ex[no]:=i;

exit(d);

end;

end;

i:=en[i];

end;

ex[no]:=i;

exit(0);

end;

function modlabel:boolean;

var

d,i,j:longint;

begin

d:=maxlongint;

for i:=1 to n do

if v[i] then

begin

j:=en[i];

while j0 do

begin

if (eu[j]>0)and not v[et[j]] and(ec[j]-dis[i]+dis[et[j]]0 do

fillchar(v,sizeof(v),0);

until modlabel;

work:=cost;

end;

function solve(x,d:longint):longint;

var i,k,t,p,last,cost,lk:longint;

begin

fillchar(en,sizeof(en),0);

fillchar(dis,sizeof(dis),0);

k:=0; n:=2; t:=x; p:=0;

while x0 do

begin

k:=k+x mod 10;

x:=x div 10;

inc(p);

end;

n:=1; x:=t; l:=k+p+1; last:=1; cost:=1; lk:=0;

while x0 do

begin

k:=x mod 10;

for i:=1 to k do

begin

inc(n);

build(last,n,1,-cost);

build(n,last+k+1,1,0);

end;

cost:=cost*10;

inc(n);

if last1 then

begin

if lk

11 条评论

  • @ 2015-12-12 20:22:23

    这**是什么

  • @ 2015-05-06 19:11:22

    大神(精兵),膜拜
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz
    orz

  • @ 2015-05-06 19:10:28

    orz

  • @ 2014-12-23 16:16:17
                。   。    。    。
                   。           。  
                          |
                          |
                          。
                      。     。
                          。
    
  • @ 2014-11-29 09:24:07

    大犇

  • @ 2014-11-25 12:10:28

  • @ 2014-07-31 20:36:53

    牛……掰……犇……

  • @ 2013-08-14 10:21:53

    什么情况...

  • @ 2013-08-09 21:41:49

    ORZ

  • @ 2009-03-27 18:44:17

    您A+B用最小费用流?

  • @ 2009-03-10 19:56:51

    ** 牛**

    rt

  • 1

信息

ID
1000
难度
9
分类
(无)
标签
(无)
递交数
73530
已通过
28210
通过率
38%
被复制
201