题目描述

大学选课总是烦恼着很多人。现在X同学选出了很多备选课,但是有的课程之间是有时间冲突的。X不会分身,自然无法在同一个时间上不同的课。每个课可能有很多备选时间,但是每个课只需要选一个时间上就可以了。当然X没有必要在不同时间上相同的课。

现在把X的备选课及相应的上课时间告诉你,请你求出X一星期最多可以上多少课。

输入格式

第一行输入一个n,表示X将提供给你n个备选课。

接下来n行,每行包含若干个整数来描述每个备选课信息。

对于第i行,首先读入一个k,表示第i个备选课有k个时间可以选择。接下来读入k对数p,q,表示在第i个备选课在星期p的第q节课可以上。

输出格式

输出仅包含一个整数,表示X最多可以选多少节课来上。

样例数据 1

输入  [复制]

 


1 1 1 
2 1 1 2 2 
1 2 2 
2 3 2 3 3 
1 3 3

输出

4

备注

对于100%的数据:n<=300,1<=t<=84,1<=p<=7,1<=q<=12。

比第一题更裸的网络流

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<algorithm>
  6. #include<cmath>
  7. #include<queue>
  8. #include<deque>
  9. #include<set>
  10. #include<map>
  11. #include<ctime>
  12. #define LL long long
  13. #define inf 0x7ffffff
  14. #define pa pair<int,int>
  15. #define pi 3.1415926535897932384626433832795028841971
  16. #define S 0
  17. #define T 1000
  18. using namespace std;
  19. struct edge{
  20. int to,next,v;
  21. }e[200010];
  22. int head[10010];
  23. int n,m,cnt=1,t,w,ans;
  24. int h[10010];
  25. int q[100010];
  26. inline void ins(int u,int v,int w)
  27. {
  28. e[++cnt].to=v;
  29. e[cnt].v=w;
  30. e[cnt].next=head[u];
  31. head[u]=cnt;
  32. }
  33. inline void insert(int u,int v,int w)
  34. {
  35. ins(u,v,w);
  36. ins(v,u,0);
  37. }
  38. inline bool bfs()
  39. {
  40. memset(h,-1,sizeof(h));
  41. t=0;w=1;h[S]=0;q[1]=S;
  42. while (t<w)
  43. {
  44. int now=q[++t];
  45. for(int i=head[now];i;i=e[i].next)
  46. if (e[i].v&&h[e[i].to]==-1)
  47. {
  48. h[e[i].to]=h[now]+1;
  49. q[++w]=e[i].to;
  50. }
  51. }
  52. if (h[T]==-1)return 0;
  53. return 1;
  54. }
  55. inline int dfs(int x,int f)
  56. {
  57. if (x==T||!f)return f;
  58. int used=0,w;
  59. for (int i=head[x];i;i=e[i].next)
  60. if (e[i].v&&h[e[i].to]==h[x]+1)
  61. {
  62. w=used;
  63. w=dfs(e[i].to,min(e[i].v,f-w));
  64. e[i].v-=w;
  65. e[i^1].v+=w;
  66. used+=w;
  67. if (!f)return used;
  68. }
  69. if (!used)h[x]=-1;
  70. return used;
  71. }
  72. inline void dinic()
  73. {
  74. while (bfs())ans+=dfs(S,inf);
  75. }
  76. inline LL read()
  77. {
  78. LL x=0,f=1;char ch=getchar();
  79. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  80. while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
  81. return x*f;
  82. }
  83. int main()
  84. {
  85. n=read();
  86. for (int i=1;i<=n;i++)
  87. insert(S,i,1);
  88. for (int i=n+1;i<=n+84;i++)
  89. insert(i,T,1);
  90. for (int i=1;i<=n;i++)
  91. {
  92. int t=read();
  93. for (int j=1;j<=t;j++)
  94. {
  95. int p=read(),q=read();
  96. int tru=(p-1)*12+q;
  97. insert(i,n+tru,1);
  98. }
  99. }
  100. dinic();
  101. printf("%d\n",ans);
  102. }

  

codecomb 2092【课程选择】的更多相关文章

  1. C#实例,熟练使用泛型数组等,课程选择小软件

    CourseItem.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  2. 利用javascript实现课程选择

    最终实现的效果如下图所示: 代码如下所示: HTML代码部分: <body> <div class="page" style="overflow: hi ...

  3. [自学] MIT的EECS本科+研究生课程【持续更新中-2020.06.02】

    前言 我的本科是读的电子信息工程,研究生跟着老师做项目,参与到深度学习中来,毕业后做了算法工程师,工作之后愈发发现,不论从事什么岗位,基础都很重要,但现在也没有时间再读一遍本科了,自学的话也不知道从何 ...

  4. 设计模式(十一)外观模式(Facade Pattern)

    一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ...

  5. C#设计模式-外观模式

    在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模 ...

  6. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 更新关系数据

    Updating related data¶ 7 of 7 people found this helpful The Contoso University sample web applicatio ...

  7. 第二次作业——C++学习

    课程选择: 以往在自学的过程就比较留意一些自学的网站,所以这次"C++自学"感觉找课程还是比较轻松的. 因为之前网页等学习都是在慕课网(视频学习个人感觉有时挺费时间的,特别是有时以 ...

  8. 在线考试系统(Online Exam System)--ASP.NET

    用户设计 -|学生 -|老师 -|管理员 学生结构设计 -|个人信息管理 -|修改个人信息 -|修改登录密码 -|选课中心 -|显示所有老师所开课的信息可进行选课 -|显示自己已选课程 -|在线考试 ...

  9. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第八篇:为ASP.NET MVC应用程序 ...

随机推荐

  1. js深入研究之匿名函数

    /* 匿名函数*/ (function() { var foo = 10; var bar = 2; alert(foo * bar);})(); /* 匿名函数,带参数 */ (function(f ...

  2. linux使用mysql的命令

    1.连接到mysql服务器的命令 mysql -h 服务器主机地址 -u 用户名 -p 用户密码 例:mysql -h 192.168.1.1 -u root -p   //指定服务器的主机地址和用户 ...

  3. 《Java程序员面试笔试宝典》之Static关键字有哪些作用

    static关键字主要有两种作用:第一,只想为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关.第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过 ...

  4. poj1330Nearest Common Ancestors(LCA小结)

    题目请戳这里 题目大意:意如其名. 题目分析:本题只有一个查询,所以可以各种乱搞过去. 不过对于菜鸟而言,还是老老实实练习一下LCA算法. LCA有很多经典的算法.按工作方式分在线和离线2种. tar ...

  5. 无心插柳OR志在必得?阿里推“来往”的意图

        近年来,阿里巴巴在外围的动作确实不少,投资新浪微博.投资陌陌,配合阿里自身的一些战略调整,让人觉得这家公司似乎正在经历一场前所未有的“蜕变”.其实这也不难理解,在BAT三国演义中,任何一方都不 ...

  6. java遍历泛型的方法

    一.List遍历 Java中List遍历有三种方法来遍历泛型,主要为: 1.for循环遍历 2.iterator遍历 3.foreach遍历 package com.gmail.lsgjzhuwei; ...

  7. iOS8 Core Image In Swift:人脸检测以及马赛克

    iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...

  8. HTTP协议4之缓存--转

    HTTP协议提供了非常强大的缓存机制, 了解这些缓存机制,对提高网站的性能非常有帮助. 缓存的概念 缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP. ...

  9. border-radius实例1

    简单参数设置一 1.html <div class="paddingBig"> <div class="divSmall radiusOne" ...

  10. (原)Ubuntu16中使用nvidia官方提供的驱动,而非自带的驱动

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5638185.html 安装完ubuntu16后,显卡显示的是Gallium... 在“设置-软件和更新 ...