bzoj1221的变形版本,弄懂1221,这题还是很简单的

 const inf=;
type node=record
       point,next,flow,cost:longint;
     end; var edge:array[..] of node;
    q:array[..] of longint;
    cur,pre,d,p,a:array[..] of longint;
    v:array[..] of boolean;
    i,j,x,y,e,n,m,k,t,te,len,sf:longint; function min(a,b:longint):longint;
  begin
    if a>b then exit(b) else exit(a);
  end; procedure add(x,y,f,c:longint);
  begin
    inc(len);
    edge[len].point:=y;
    edge[len].flow:=f;
    edge[len].cost:=c;
    edge[len].next:=p[x];
    p[x]:=len;
  end; function spfa:boolean;
  var f,r,i,x,y:longint;
  begin
    for i:= to t do
      d[i]:=inf;
    d[]:=;
    f:=;
    r:=;
    fillchar(v,sizeof(v),false);
    v[]:=true;
    while f<=r do
    begin
      x:=q[f];
      i:=p[x];
      v[x]:=false;
      while i<>- do
      begin
        y:=edge[i].point;
        if edge[i].flow> then
          if d[y]>d[x]+edge[i].cost then
          begin
            d[y]:=d[x]+edge[i].cost;
            pre[y]:=x;
            cur[y]:=i;
            if not v[y] then
            begin
              inc(r);
              q[r]:=y;
              v[y]:=true;
            end;
          end;
        i:=edge[i].next;
      end;
      inc(f);
    end;
    if d[t]=inf then exit(false) else exit(true);
  end; procedure mincost;
  var i,j,neck,f,c:longint;
  begin
    f:=;
    c:=;
    while spfa do
    begin
      neck:=inf;
      i:=t;
      while i<> do
      begin
        j:=cur[i];
        neck:=min(neck,edge[j].flow);
        i:=pre[i];
      end;
      i:=t;
      while i<> do
      begin
        j:=cur[i];
        dec(edge[j].flow,neck);
        inc(edge[j xor ].flow,neck);
        i:=pre[i];
      end;
      f:=f+neck;
      c:=c+d[t]*neck;
  //    writeln(f,' ',c);
    end;
    if f=sf then writeln(c) else writeln('impossible');
  end; begin
  readln(te);
  for e:= to te do
  begin
    len:=-;
    fillchar(p,sizeof(p),);
    readln(n,m,k);
    t:=n*+;
    sf:=;
    for i:= to n do
    begin
      read(a[i]);
      add(i,t,a[i],);
      add(t,i,,);
      sf:=sf+a[i];
    end;
    readln;
    for i:= to m do
    begin
      read(x,y);
      add(,,x,y);
      add(,,,-y);
    end;
    readln;
    for i:= to k do
    begin
      read(x,y);
      for j:= to n do
        if j++x<=n then
        begin
          add(j+n,j++x,inf,y);
          add(j++x,j+n,,-y);
        end
        else break;
    end;
    for i:= to n do
    begin
      add(,i+n,a[i],);
      add(i+n,,,);
      if i<>n then
      begin
        add(i,i+,inf,);  //今天没有用的人可以明天用
        add(i+,i,,);
        add(i+n,i+n+,inf,);
        add(i+n+,i+n,,);
      end;
    end;
    write('Case ',e,': ');
    mincost;
  end;
end.

bzoj3280的更多相关文章

  1. 【BZOJ3280】小R的烦恼 最小费用最大流

    [BZOJ3280]小R的烦恼 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的 ...

  2. BZOJ3280: 小R的烦恼

    题解: 随便建一下图费用流就可以过吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath> #incl ...

  3. 【BZOJ3280】 小R的烦恼(费用流,建模)

    有很浓厚的熟悉感?餐巾计划问题? 不就是多了几个医院,相当于快洗部和慢洗部开了分店. 考虑建图: 如果把每一天拆成两个点,一个表示需求,另一个表示拥有的话. 显然就是一个两边的图,考虑如果我现在有人, ...

  4. 小R的烦恼 BZOJ3280

    分析: 一开始一直Wa,发现是建图建错了,必须得拆点. S连i,流量为a[i],费用为0,i+n连T,流量同上,费用为0,之后i连i+1费用为0,流量为inf,之后S连n*2+i,流量为li,费用为0 ...

  5. bzoj3280: 小R的烦恼(最小费用最大流)

    Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实 ...

  6. 【费用流】bzoj3280 小R的烦恼

    类似bzoj1221 http://www.cnblogs.com/autsky-jadek/p/4174087.html 只不过大学有多个,所以我们另开一个节点汇总所有'S->大学'的边,然后 ...

  7. 【bzoj3280】小R的烦恼 费用流

    题目描述 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=N ...

  8. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  9. BZOJ题目(持续更新)

    bzoj1009:kmp想法+递推+矩阵快速幂.很好的想法,考虑用长串去kmp匹配短串,dp[i][j]表示匹配指针分别指在i.j位置时候,前i位母字符串一共有多少种可能性,那么dp[i][j]=Σd ...

随机推荐

  1. .Net4.0如何实现.NET4.5中的Task.Run及Task.Delay方法

    前言 .NET4.0下是没有Task.Run及Task.Delay方法的,而.NET4.5已经实现,对于还在使用.NET4.0的同学来说,如何在.NET4.0下实现这两个方法呢? 在.NET4.0下, ...

  2. 21、javascript 基础

    Javascript Javascript 是一种嵌入到HTML文档的脚本语言,由浏览器解释和执行,无需编译. Javascript 是大小写敏感的,大写字母与小写字母不同. 使用“:”分号来分割每一 ...

  3. jetty运行maven程序(修改及时生效,不需要重启jetty程序)

    jetty:run -Djetty:port=9999

  4. EntityFramework 中生成的类加注释

    EF5在生成实体类时获取不到数据库中表的说明字段,需要使用单独的t4模板来获取 下载文件 将文件与edmx 放同一文件夹 1.在生成类的t4模板中加入 <#@ include file=&quo ...

  5. jquery 操作 checkbox

    对checkbox的其他几个操作 1. 全选2. 取消全选3. 选中所有奇数4. 反选5. 获得选中的所有值 js代码 $("document").ready(function() ...

  6. Oracle数据导入导出imp/exp命令总结

    racle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用 ...

  7. php输出echo、print、print_r、printf、sprintf、var_dump的区别比较

    本篇文章是对php输出echo.print.print_r.printf.sprintf.var_dump的区别进行了详细的分析介绍,需要的朋友参考下     用.net开发已经5年了,最近突然想接触 ...

  8. 【算法】数组与矩阵问题——找到无序数组中最小的k个数

    /** * 找到无序数组中最小的k个数 时间复杂度O(Nlogk) * 过程: * 1.一直维护一个有k个数的大根堆,这个堆代表目前选出来的k个最小的数 * 在堆里的k个元素中堆顶的元素是最小的k个数 ...

  9. 仿照淘宝首页做的一个高度伪对齐demo

    功能就是当右边高度没有左边高的情况下做的一些处理,由于本人技术有限,不兼容所有浏览器, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra ...

  10. spring配置中引入properties

    <context:property-placeholder location="classpath*:db.properties" />