题面

题意:n个英雄,m个怪兽,第i个英雄可以打第i个集合里的一个怪兽,一个怪兽可以在多个集合里,有k瓶药水,每个英雄最多喝一次,可以多打一只怪兽,求最多打多少只 n,m,k<=500

题解:显然的最大流裸题,多加一个药水点,药酱入度k,然后再连向英雄

队友抄的模板所以不是我的那个板子

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct Edge
  4. {
  5. int from,to,cap,flow;
  6. Edge(int u,int v,int c,int f)
  7. {
  8. from=u;
  9. to=v;
  10. cap=c;
  11. flow=f;
  12. }
  13. };
  14. const int maxn=;
  15. const int INF=0x3f3f3f3f;
  16. struct Dinic
  17. {
  18. int n,m,s,t;
  19. vector<Edge> edges;
  20. vector<int> G[maxn];
  21. int d[maxn];
  22. int cur[maxn];
  23. bool vis[maxn];
  24. void AddEdge(int from,int to, int cap)
  25. {
  26. edges.push_back(Edge(from,to,cap,));
  27. edges.push_back(Edge(to,from,,));
  28. m=edges.size();
  29. G[from].push_back(m-);
  30. G[to].push_back(m-);
  31. }
  32. bool BFS()
  33. {
  34. memset(vis,,sizeof(vis));
  35. queue<int> Q;
  36. Q.push(s);
  37. d[s]=;
  38. vis[s]=;
  39. while(!Q.empty())
  40. {
  41. int x=Q.front();
  42. Q.pop();
  43. for(int i=;i<G[x].size();i++)
  44. {
  45. Edge& e=edges[G[x][i]];
  46. if(!vis[e.to]&&e.cap>e.flow)
  47. {
  48. vis[e.to]=;
  49. d[e.to]=d[x]+;
  50. Q.push(e.to);
  51. }
  52. }
  53. }
  54. return vis[t];
  55. }
  56. int DFS(int x,int a)
  57. {
  58. if(x==t||a==) return a;
  59. int flow=,f;
  60. for(int& i=cur[x];i<G[x].size();i++)
  61. {
  62. Edge& e=edges[G[x][i]];
  63. if(d[x]+==d[e.to]&&(f=DFS(e.to,min(a,e.cap-e.flow)))>)
  64. {
  65. e.flow+=f;
  66. edges[G[x][i]^].flow-=f;
  67. flow+=f;
  68. a-=f;
  69. if(a==) break;
  70. }
  71. }
  72. return flow;
  73. }
  74. int Maxflow(int s,int t)
  75. {
  76. this->s=s;this->t=t;
  77. int flow=;
  78. while(BFS())
  79. {
  80. memset(cur,,sizeof(cur));
  81. flow+=DFS(s,INF);
  82. }
  83. return flow;
  84. }
  85. }fuck;
  86. int main()
  87. {
  88. int n,m,k,i,j,tmpn,x;
  89. scanf("%d%d%d",&n,&m,&k);
  90. for(i=;i<=n;i++)
  91. {
  92. fuck.AddEdge(,i+,);
  93. fuck.AddEdge(,i+,);
  94. }
  95. fuck.AddEdge(,,k);
  96. for(i=;i<=n;i++)
  97. {
  98. scanf("%d",&tmpn);
  99. for(j=;j<=tmpn;j++)
  100. {
  101. scanf("%d",&x);
  102. fuck.AddEdge(i+,n++x,);
  103. }
  104. }
  105. for(i=;i<=m;i++)
  106. fuck.AddEdge(n++i,n+m+,);
  107. printf("%d\n",fuck.Maxflow(,n+m+));
  108. return ;
  109. }

Gym - 101981I The 2018 ICPC Asia Nanjing Regional Contest I.Magic Potion 最大流的更多相关文章

  1. Gym - 101981K The 2018 ICPC Asia Nanjing Regional Contest K.Kangaroo Puzzle 暴力或随机

    题面 题意:给你1个20*20的格子图,有的是障碍有的是怪,你可以每次指定上下左右的方向,然后所有怪都会向那个方向走, 如果2个怪撞上了,就融合在一起,让你给不超过5w步,让所有怪都融合 题解:我们可 ...

  2. Gym - 101981M The 2018 ICPC Asia Nanjing Regional Contest M.Mediocre String Problem Manacher+扩增KMP

    题面 题意:给你2个串(长度1e6),在第一个串里找“s1s2s3”,第二个串里找“s4”,拼接后,是一个回文串,求方案数 题解:知道s1和s4回文,s2和s3回文,所以我们枚举s1的右端点,s1的长 ...

  3. Gym - 101981G The 2018 ICPC Asia Nanjing Regional Contest G.Pyramid 找规律

    题面 题意:数一个n阶三角形中,有多少个全等三角形,n<=1e9 题解:拿到题想找规律,手画开始一直数漏....,最后还是打了个表 (打表就是随便定个点为(0,0),然后(2,0),(4,0), ...

  4. Gym - 101981D The 2018 ICPC Asia Nanjing Regional Contest D.Country Meow 最小球覆盖

    题面 题意:给你100个三维空间里的点,让你求一个点,使得他到所有点距离最大的值最小,也就是让你找一个最小的球覆盖掉这n个点 题解:红书模板题,这题也因为数据小,精度也不高,所以也可以用随机算法,模拟 ...

  5. Gym - 101981J The 2018 ICPC Asia Nanjing Regional Contest J.Prime Game 计数

    题面 题意:1e6的数组(1<a[i]<1e6),     mul (l,r) =l × (l+1) ×...× r,  fac(l,r) 代表 mul(l,r) 中不同素因子的个数,求s ...

  6. Gym - 101981A The 2018 ICPC Asia Nanjing Regional Contest A.Adrien and Austin 简单博弈

    题面 题意:一堆有n个石子,编号从1⋯N排成一列,两个人Adrien 和Austin玩游戏,每次可以取1⋯K个连续编号的石子,Adrien先手,谁不能取了则输 题解:k==1时,显然和n奇偶相关,当k ...

  7. 2018 ICPC Asia Jakarta Regional Contest

    题目传送门 题号 A B C D E F G H I J K L 状态 Ο . . Ο . . Ø Ø Ø Ø . Ο Ο:当场 Ø:已补 .  :  待补 A. Edit Distance Thin ...

  8. 2018 ICPC Asia Singapore Regional A. Largest Triangle (计算几何)

    题目链接:Kattis - largesttriangle Description Given \(N\) points on a \(2\)-dimensional space, determine ...

  9. 2019 ICPC Asia Nanjing Regional

    2019 ICPC Asia Nanjing Regional A - Hard Problem 计蒜客 - 42395 若 n = 10,可以先取:6,7,8,9,10.然后随便从1,2,3,4,5 ...

随机推荐

  1. url中含有中文路径时访问出现404问题

    /** * URL中文字符编码转换 * @param url 含中文字符的URL * @return */ public static String getChineseURICode(String ...

  2. SSL协议提供的服务

    SSL协议提供的服务主要有: 1)认证用户和服务器,确保数据发送到正确的客户机和服务器: 2)加密数据以防止数据中途被窃取: 3)维护数据的完整性,确保数据在传输过程中不被改变.

  3. Origin C调用GSL

    GSL (GNU Scientific Library, http://www.gnu.org/software/gsl/)是C.C++的数值算法库,提供了范围宽广的数学程序,包括随机数字生成器.数理 ...

  4. Android组件化最佳实践 ARetrofit原理

    ARetrofit原理讲原理之前,我想先说说为什么要ARetrofit.开发ARetrofit这个项目的思路来源其实是Retrofit,Retrofit是Square公司开发的一款针对Android网 ...

  5. [API 开发管理] EOLINKER 升级为多产品架构, AMS V4.5 版本常见问题汇总

    自AMS4.5开始,eoLinker 全面升级为多产品架构,部分操作方式较以前有较大改变,本文针对改进部分做重点说明. 在说明之前,我们先通过以下的图文看看AMSV4.5更新了哪些内容: Q:我可以创 ...

  6. Oracle query that count connections by minute with start and end times provided

    数据结构类似 SQL> select * from t; B                 E                 N ----------------- ------------ ...

  7. exgcd扩展欧几里得求解的个数

    知识储备 扩展欧几里得定理 欧几里得定理 (未掌握的话请移步[扩展欧几里得]) 正题 设存在ax+by=gcd(a,b),求x,y.我们已经知道了用扩欧求解的方法是递归,终止条件是x==1,y==0: ...

  8. models中,对于(Small)IntegerField类型字段的choices参数在前端的展示

    # models.py class UserInfo(models.Model): gender_choices = ( (1, "男"), (2, "女"), ...

  9. 44.bucket filter:统计各品牌最近一个月的平均价格

    课程大纲     GET /tvs/sales/_search { "size": 0, "query": { "term": { &quo ...

  10. 第七节:numpy之矩阵及特殊矩阵的创建