和开发计划一样(数组开太小wa了好多次,然后为什么这么慢?

  1. type
  2. arr=record
  3. toward,next,cap,cost:longint;
  4. end;
  5. const
  6. maxm=;
  7. maxn=;
  8. var
  9. edge:array[..maxm]of arr;
  10. dist,first,sch,a,new,old,p,slack:array[..maxn]of longint;
  11. chose:array[..maxn]of boolean;
  12. maxcost,maxflow,n,s,t,tot,esum,i,tt,sum,jj:longint;
  13.  
  14. function min(x,y:longint):longint;
  15. begin
  16. if x<y then exit(x);
  17. exit(y);
  18. end;
  19.  
  20. procedure add(i,j,k,l:longint);
  21. begin
  22. inc(esum);
  23. edge[esum].toward:=j;
  24. edge[esum].next:=first[i];
  25. first[i]:=esum;
  26. edge[esum].cap:=k;
  27. edge[esum].cost:=l;
  28. end;
  29.  
  30. procedure addedge(i,j,k,l:longint);
  31. begin
  32. add(i,j,k,l);
  33. add(j,i,,-l);
  34. end;
  35.  
  36. procedure into;
  37. var
  38. n,m1,m2,i,j,k,cost1,time:longint;
  39. begin
  40. readln(n,m1,m2);
  41. fillchar(first,sizeof(first),);
  42. esum:=-;
  43. for i:= to m1 do sch[i]:=i;
  44. tot:=m1;
  45. for i:= to n do begin
  46. inc(tot);
  47. new[i]:=tot;
  48. inc(tot);
  49. old[i]:=tot;
  50. end;
  51. inc(tot);
  52. s:=tot;
  53. inc(tot);
  54. t:=tot;
  55. for i:= to n do begin
  56. read(a[i]);
  57. inc(sum,a[i]);
  58. end;
  59. for i:= to m1 do begin
  60. read(j,p[i]);
  61. addedge(s,sch[i],j,);
  62. end;
  63. for i:= to n do begin
  64. addedge(s,old[i],a[i],);
  65. for j:= to m1 do
  66. addedge(sch[j],new[i],a[i],p[j]);
  67. addedge(new[i],t,a[i],);
  68. end;
  69. for i:= to m2 do begin
  70. read(time,cost1);
  71. for j:= to n-time do
  72. for k:=j+time+ to n do
  73. addedge(old[j],new[k],maxlongint,cost1);
  74. end;
  75. end;
  76.  
  77. function aug(x,flow:longint):longint;
  78. var
  79. now,more,i,too,value:longint;
  80. begin
  81. if x=t then begin
  82. inc(maxflow,flow);
  83. inc(maxcost,dist[s]*flow);
  84. exit(flow);
  85. end;
  86. // writeln(x);
  87. i:=first[x];
  88. chose[x]:=true;
  89. now:=;
  90. while i>= do begin
  91. too:=edge[i].toward;
  92. value:=edge[i].cost;
  93. if (edge[i].cap>) and (not chose[too]) then
  94. if dist[x]=dist[too]+value then begin
  95. more:=aug(too,min(edge[i].cap,flow-now));
  96. dec(edge[i].cap,more);
  97. inc(edge[i xor ].cap,more);
  98. inc(now,more);
  99. if flow=now then exit(flow);
  100. end
  101. else
  102. slack[too]:=min(slack[too],dist[too]+value-dist[x]);
  103. i:=edge[i].next;
  104. end;
  105. exit(now);
  106. end;
  107.  
  108. function rel:boolean;
  109. var
  110. i,spent:longint;
  111. begin
  112. spent:=maxlongint;
  113. for i:= to tot do
  114. if not chose[i] then spent:=min(spent,slack[i]);
  115. if spent=maxlongint then exit(false);
  116. for i:= to tot do
  117. if chose[i] then inc(dist[i],spent);
  118. exit(true);
  119. end;
  120.  
  121. begin
  122. readln(tt);
  123. for jj:= to tt do begin
  124. sum:=;
  125. into;
  126. fillchar(dist,sizeof(dist),);
  127. maxcost:=;
  128. maxflow:=;
  129. repeat
  130. for i:= to tot do slack[i]:=maxlongint;
  131. repeat
  132. fillchar(chose,sizeof(chose),false);
  133. until aug(s,maxlongint)<=;
  134. until not rel;
  135. write('Case ',jj,': ');
  136. if sum=maxflow then writeln(maxcost)
  137. else writeln('impossible');
  138. end;
  139. end.

bzoj 3280: 小R的烦恼 (网络流)的更多相关文章

  1. BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发

    3280: 小R的烦恼 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 399  Solved: 200[Submit][Status][Discuss ...

  2. bzoj 3280: 小R的烦恼 费用流

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

  3. BZOJ 3280: 小R的烦恼

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

  4. 【BZOJ】【3280】小R的烦恼

    网络流/费用流 和软件开发那题基本相同,只是多加了一个“雇佣研究生”的限制:不同价格的研究生有不同的数量…… 那么只需加一个附加源点,对每一种研究生连边 S->ss 容量为l[i],费用为p[i ...

  5. BZOJ3280: 小R的烦恼

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

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

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

  7. BZOJ_3280_小R的烦恼_最小费用最大流

    BZOJ_3280_小R的烦恼_最小费用最大流 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难 ...

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

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

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

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

随机推荐

  1. LeetCode:36. Valid Sudoku(Medium)

    1. 原题链接 https://leetcode.com/problems/valid-sudoku/description/ 2. 题目要求 给定一个 9✖️9 的数独,判断该数独是否合法 数独用字 ...

  2. Asp.net Web Api开发Help Page 添加对数据模型生成注释的配置和扩展

    在使用webapi框架进行接口开发的时候,编写文档会需要与接口同步更新,如果采用手动式的更新的话效率会非常低.webapi框架下提供了一种自动生成文档的help Page页的功能. 但是原始版本的效果 ...

  3. spring-boot、mybatis整合

    一.MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 X ...

  4. WPF Style Setter use a TemplateBinding?

    <Style TargetType="{x:Type local:ImageButton}"> <Setter Property="Horizontal ...

  5. C# 调用webserver 出现:未能从程序集“jgd3jufm, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”中加载类型

    一般都是 用的动态调用webserver,然后这次用的是固定的 首先 最后 实例化改接口,然后直接传值调用

  6. Qt-QML-Slider-滑块-Style-后继

    首先了,先把我上篇文章的demo准备好,不过我上次写的被我删除了,这次就重新写了一个,上代码 import QtQuick 2.5 import QtQuick.Controls 1.4 import ...

  7. Linux命令应用大词典-第34章 打印与传真

    34.1 lpr:打印文件 34.2 lpq:显示打印队列状态 34.3 lprm:取消打印作业 34.4 lpstat:显示cups状态信息 34.5 cupsaccept:接受作业发送到目的地 3 ...

  8. 剑指offer-从上往下打印二叉树22

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. class Solution: # 返回从上到下每个节点值列表,例:[1,2,3] def PrintFromTopToBottom( ...

  9. PHP正则相关

    描述字符串排列模式的一种自定义语法规则 如果可以使用字符串函数处理的任务 就不要使用正则 正则表达式 就是通过构建具有特定规则的模式,与输入的字符信息比较 在进行 分割 匹配 查找 替换 等工作   ...

  10. 水管工游戏:dfs(递归)

    添柴网这题好想不能评测,所以不确保代码的正确性 题目描述: 这小节有点难,看不太懂可以跳过哦.最近小哼又迷上一个叫做水管工的游戏.游戏的大致规则是这样的.一块矩形土地被分为N * M的单位正方形,现在 ...