题目链接:

  http://codeforces.com/gym/100526

  http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11664&courseid=0

题目大意:

  总共N个点,现在有P个人,在T时间内要从起点S走到C个医疗站中的任意一个,M条X到Y的有向边,每条边每个单位时间可以通过的人数是pi,走完这条边耗时ti。

  人可以停留在任意一个点,求最多能有多少人到达医疗站。

  (1<=C<=N<=1000,0<=M<=1000,1<=P,T<=100,1<=pi,ti<=100)

题目思路:

  【最大流】

  SPFA居然T了。。

  将每个点按照时间拆点{X节点j时间的状态为点X(j)},把X到Y的边pi,ti拆成T-ti条边,每条边从X(j)到Y(j+ti)容量为pi,j为时间从0~T-ti,表示在j时间有pi个人可以从X到Y,到达Y的时间为j+ti。

  因为人可以停留在节点上所以X(i)到X(i+1)连一条容量P的边。

  每个医疗站的最终时间Ci(T)到超级汇T_T连一条容量为P的边(到达医疗站的人就无限停留直到时间为T到超级汇T_T)

  超级源S_S到起点S(0)连一条容量为P的边表示初始起点S有P个人。

  最终统计到达超级汇的人数即可。跑一遍最大流。

  1. //
  2. //by coolxxx
  3. //#include<bits/stdc++.h>
  4. #include<iostream>
  5. #include<algorithm>
  6. #include<string>
  7. #include<iomanip>
  8. #include<map>
  9. #include<memory.h>
  10. #include<time.h>
  11. #include<stdio.h>
  12. #include<stdlib.h>
  13. #include<string.h>
  14. //#include<stdbool.h>
  15. #include<math.h>
  16. #define min(a,b) ((a)<(b)?(a):(b))
  17. #define max(a,b) ((a)>(b)?(a):(b))
  18. #define abs(a) ((a)>0?(a):(-(a)))
  19. #define lowbit(a) (a&(-a))
  20. #define sqr(a) ((a)*(a))
  21. #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
  22. #define mem(a,b) memset(a,b,sizeof(a))
  23. #define eps (1e-8)
  24. #define J 10
  25. #define mod 1000000007
  26. #define MAX 0x7f7f7f7f
  27. #define PI 3.14159265358979323
  28. #define N 1004
  29. #define M 104
  30. using namespace std;
  31. typedef long long LL;
  32. int cas,cass;
  33. int n,m,lll,ans;
  34. int s,p,t,S,T,nn;
  35. int c[N];
  36. int last[N*M+M],vd[N*M+M],d[N*M+M];
  37. struct xxx
  38. {
  39. int next,to,q;
  40. }a[N*M*M];
  41. void add(int x,int y,int f)
  42. {
  43. a[++lll].next=last[x];
  44. a[lll].to=y;
  45. a[lll].q=f;
  46. last[x]=lll;
  47. }
  48. int sap(int u,int f)
  49. {
  50. int i,v,tt,asp=,mix=nn-;
  51. if(u==T)return f;
  52. for(i=last[u];i;i=a[i].next)
  53. {
  54. v=a[i].to;
  55. if(a[i].q>)
  56. {
  57. if(d[u]==d[v]+)
  58. {
  59. tt=sap(v,min(f-asp,a[i].q));
  60. asp+=tt;
  61. a[i].q-=tt;
  62. a[i^].q+=tt;
  63. if(asp==f || d[S]==nn)
  64. return asp;
  65. }
  66. mix=min(mix,d[v]);
  67. }
  68. }
  69. if(asp!=)return asp;
  70. if(!--vd[d[u]])d[S]=nn;
  71. else vd[d[u]=mix+]++;
  72. return asp;
  73. }
  74. int main()
  75. {
  76. #ifndef ONLINE_JUDGE
  77. // freopen("1.txt","r",stdin);
  78. // freopen("2.txt","w",stdout);
  79. #endif
  80. int i,j,k;
  81. int x,y,f,dd;
  82. for(scanf("%d",&cas);cas;cas--)
  83. // for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
  84. // while(~scanf("%s",s+1))
  85. // while(~scanf("%d",&n))
  86. {
  87. ans=;lll=;mem(vd,);mem(d,);mem(last,);
  88. scanf("%d%d%d%d%d",&n,&s,&p,&t,&cass);
  89. S=n*t+t+;T=S+;
  90. nn=T;vd[]=nn-t+;
  91. add(S,t,p);
  92. add(t,S,);
  93. add(t,s*t+,p);
  94. add(s*t+,t,);
  95. for(i=;i<=n;i++)
  96. {
  97. for(j=;j<t;j++)
  98. {
  99. add(i*t+j,i*t+j+,p);
  100. add(i*t+j+,i*t+j,);
  101. }
  102. }
  103. for(i=;i<=cass;i++)
  104. {
  105. scanf("%d",&c[i]);
  106. add(c[i]*t+t,T,p);
  107. add(T,c[i]*t+t,);
  108. }
  109. scanf("%d",&m);
  110. for(i=;i<=m;i++)
  111. {
  112. scanf("%d%d%d%d",&x,&y,&f,&dd);
  113. for(j=;j+dd<=t;j++)
  114. {
  115. add(x*t+j,y*t+j+dd,f);
  116. add(y*t+j+dd,x*t+j,);
  117. }
  118. if(x==s)
  119. {
  120. add(t,y*t+dd,f);
  121. add(y*t+dd,t,);
  122. }
  123. }
  124. while(d[S]<nn)
  125. {
  126. f=sap(S,MAX);
  127. ans+=f;
  128. }
  129. printf("%d\n",ans);
  130. }
  131. return ;
  132. }
  133. /*
  134. //
  135.  
  136. //
  137. */

【最大流】BAPC2014 A Avoiding the Apocalypse (Codeforces GYM 100526)的更多相关文章

  1. 【中途相遇法】【STL】BAPC2014 K Key to Knowledge (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  2. 【线段树】BAPC2014 E Excellent Engineers (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  3. 【扩展欧几里得】BAPC2014 I Interesting Integers (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  4. 【宽搜】BAPC2014 J Jury Jeopardy (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  5. 【模拟】BAPC2014 G Growling Gears (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  6. 【最短路】BAPC2014 B Button Bashing (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  7. Codeforces Gym 101190M Mole Tunnels - 费用流

    题目传送门 传送门 题目大意 $m$只鼹鼠有$n$个巢穴,$n - 1$条长度为$1$的通道将它们连通且第$i(i > 1)$个巢穴与第$\left\lfloor \frac{i}{2}\rig ...

  8. Codeforces Gym 101252D&&floyd判圈算法学习笔记

    一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...

  9. Codeforces Gym 101623A - 动态规划

    题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...

随机推荐

  1. 文档对象模型操作xml文档

    简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...

  2. hibernate中使用HQL进行数据库查询

    1.写的规则比较简单,我讲一下,如图Station这个不是数据库中的表,而是entity包中的类名Station,可以省略 select * 2.返回的类型自动转化为String类型,不用你自己再转化 ...

  3. WisDom.Net 框架设计(二) 服务总线

    WisDom.Net 框架设计--服务总线 1.Soa 简介     soa 就是面向服务的体系结构 是一个组件模型,不同的组件之间通过定义良好的接口联系起来.就像盖房子一块砖头一块砖头的砌墙,一片一 ...

  4. 将MVC中的Controllers、Model和View分别放到单独的项目中

    Model: 新建-项目-Windows-类库 MVCTest.Model Controller:新建-项目-Windows-控制台应用程序 MVCTest.Bussiness Views:新建-项目 ...

  5. android调用系统图片浏览器裁切后出现黑边

    是这样的:我使用系统的图片浏览器,然后让它自动跳到图片裁切界面,当我们定义了返回的图片大小过大,而我们实际的图片像素达不到时,系统为我们自动地填充了不够的像素成黑色,那么我们怎么样来解决这个问题呢?不 ...

  6. (whh仅供自己参考)进行ip网络请求的步骤

    这个过程大致是这个样子: 1 添加通知 2 发送网络请求 里边有一个发送通知的操作 3 执行发送通知的具体操作 代码如下: 1 在VC添加通知 [[NSNotificationCenter defau ...

  7. JavaScript HTML DOM 元素(节点)

    JavaScript HTML DOM 元素(节点) 创建新的 HTML 元素 创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素 ...

  8. Java反射学习(java reflect)(三)

    五.方法指针 据说JAVA方法指针的出现,是作为反射包的附产品 : 使用原理:Invoke被允许调用包装在当前Method对象的方法: 第一个参数为隐式参数,可用null,第二个参数为显示参数. Ex ...

  9. node http.get请求

    var http = require('http'); var querystring = require('querystring') var url = 'http://www.baidu.com ...

  10. Direct 2D实现界面库 (1)

    大学时尝试过很多次写一个UI库, 初次使用 GDI 绘图, 当时水平很低, GDI功能太弱, 以失败而告终. 之后使用 GDI+ 绘图, 当时水平依旧很低, GDI功能很强, 但效率实在太慢, 以失败 ...