网络流 某些题解

【1】 vijos   p1524最小监视代价   

                      最小割

                      多加一个点n+1,与所有传送点的结点连边。无向图,双向边。然后就是模版....AC~


【2】vijos   p1590 笨笨的洪水堵截

                      最小割

                      拆点,

        for i:=0 to n+n do first[i]:=-1;
        for i:=1 to n-1 do begin
            read(j);
            addedge(i,i+n,j);
            end;
        addedge(n,n+n,maxlongint);
        for i:=1 to m do begin
             readln(j,k);
             if j>k then swap(j,k);
             if j=0 then addedge(0,k,maxlongint)
                    else addedge(j+n,k,maxlongint);
             addedge(k+n,j,maxlongint);
         end;
        (注意:洪水是从0开始流的!)AC~

【3】 vijos p1555 狼和羊的故事
                  最小割
                  平面图中每个格与四周的格连边,cap=1;
                  s=0,t=n*m+1;
                  狼领地与s连边,羊领地与t连边。
                  AC~
【4】vijos p1213 80人环游世界
                 最小费用最大流
                 拆点,边cap=v;
       
      s:=0;
      t:=n*2+2;
      k:=n*2+1;
      for i:=s to t do first[i]:=-1;
      add(s,k,m,0);
      for i:=1 to n do begin
       read(a);
       add(s,i,a,0);
       add(i+n,t,a,0);
       add(k,i+n,maxlongint,0);
       end;
      for i:=1 to n-1 do
       for j:=1 to n-i do begin
        read(a);
        if a<>-1 then
        add(i,i+j+n,maxlongint,a);
        end;
【5】vijos  p1552 餐巾纸引发的血案
            最小费用最大流。写的是zkw。
            拆点,不知道为什么刚刚看了一下代码发现看不太懂。所以就只是先copy来了。依旧只是copy 初始化过程,其他按模版丫丫。
     var  i,j,x:longint;
     begin
      readln(n,a,b,f,fa,fb);
      s:=0;
      t:=n*2+1;
      for i:=s to t do first[i]:=-1;
      for i:=1 to n do begin
        read(x);
        add(s,i,x,f);
        add(s,i+n,x,0);
        add(i,t,x,0);
        end;
      for i:=1 to n do begin
       for j:=i+a+1 to n do add(i+n,j,maxlongint,fa);
       for j:=i+b+1 to n do add(i+n,j,maxlongint,fb);
       end;
     end;
【6】vijos p1653 疯狂的方格取数
           最大费用最大流,写的是spfa。
首先,对于起点和ss,我们连一条容量cap为k,花费cost为0的边。再把右下角的那个点和st连一条cap为k,cost为0的边。然后对于每个点我们进行拆点,然后之间连上1条cap为1,cost为-w[i,j](对应点价值)的边,再连上一条 cap为maxlongint,cost为0 的边。然后对于点(i,j)和点(i,j+1)之间连一条cap为maxlongint cost为0 ,在点(i,j)和(i+1,j)之间同理。’copy from EC
           然后负边处理。

【7】道路扩容   【8】终极情报网 
      


觉得自己做的题还是那么少,然后就先暂停结束了。
 just  fight.

47天。110天。Fight,and flight.


           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值