CF1027F Session in BSU】的更多相关文章

题意 有 \(n\) 门课程,每门课程可以选择在 \(a_i\) 或者 \(b_i\) 天参加考试,每天最多考一门,问最早什么时候考完所有课程. \(n\leq 10^6\). 分析 类似 [BZOJ4883]棋盘上的守卫 一题. 将每门课程对应的两天连边,如果课程 \(i\) 要在第 \(x\) 天考,则对应边指向 \(x\) . 最后有 \(n\) 天,\(n\) 条有向边,每条边的入度为1,构成了基环树森林. 总时间复杂度为 \(O(nlogn)\) (离散化). 总结:这种 \(A\)…
link 花絮: 这场看起来打得还不错的样子……(别问我是用哪个号打的). 然后听说这题的思想被出了好多次,女生赛也出过,quailty算法,然而当时没反应过来,而且时间不多啦. 题意: 有n个人,每个人有两个时间点可以参加考试,任意两人不能在同一时间点参加考试.问最迟考试的人的考试时间最早是多少? $n\leq 10^6.$ 题解: 离散化,将每人的两个时间点连边.题意可以转化为:给每条边定向满足任意一点入度至多为1,使得每条边指向的点的编号最大值最小. 要满足任意一点入度至多为1,原图必须是…
题意 题目链接 $n$个人,每个人可以在第$a_i$天或第$b_i$,一天最多考一场试,问在最优的情况下,最晚什么时候结束 Sol 自己只能想到暴力匈牙利二分图匹配,然而还是被构造数据卡了.. 标算很神奇. 同样考虑把题目中给出的模型建成二分图,左侧代表每个人,右侧代表每一天的考试 然后我们把右侧每个人能选择的两个点之间连边 这样模型就由二分图转化成了一条链上的问题. 分情况讨论一下: 考虑当前的联通块: 1.边数大于点数:因为每个条边都必须与一个点匹配,因此这样肯定无解 2.边数 = 点数:很…
题目大意:你可以在第$ai$天或者第$bi$天进行第$i$场考试,每天最多进行一场考试,求把所有考试都考完的最早结束时间 由于天数可能很大,需要离散 把问题抽象成一棵树,每个点最多被"分配"一条边,现在要删点 画画图可以发现 如果一个联通块是一棵树,那么可以删去至多一个点 如果一个联通块是一个单环树(n个点n条边),那么一个点都不能删掉 如果一个联通块边数大于点数,会发现无法把每个点只分配一条边,不合法,输出-1 判树还是单环树,求一个联通块内点的度总和/2和点数比较即可 并查集维护一…
题目链接 codeforces1027F. Session in BSU 题解 二分图匹配就fst了....显然是过去的,不过tle test87估计也pp了,好坑 那么对于上面做匹配的这个二分图分情况讨论一下 考虑当前的联通块: 边数大于点数:这样肯定是无解的 边数 = 点数:这是一棵基环树,每个日期都会被用,输出最大值 边数 < 点数:这是一棵树,输出次大值 并查集维护一下联通块 代码 #include<cstdio> #include<cstring> #include…
F. Session in BSU https://codeforces.com/contest/1027/problem/F 题意: n场考试,每场可以安排在第ai天或者第bi天,问n场考完最少需要多少天. 分析: 将所有的a与b连边,一条边相当于一场考试,一个点相当于一个考试时间,每条边需要找一个点. 那么在一个联通块中,边数>点数,无解(这些考试都只能在这个联通块内的点考). 如果边数=点数,那么相当于出现了环,每条边和一个点匹配,即n场考试,n个考试时间,所以这个联通块内的答案就是最大的…
题目直通车:Codeforces 1027F. Session in BSU 思路: 对第一门考试,使用前一个时间,做标记,表示该时间已经用过,并让第一个时间指向第二个时间,表示,若之后的考试时间和当前第一个时间冲突时,可以找到当前第二个时间来代替 对每一门考试,如果前一个时间没有被使用过,直接用前一个时间,否则看前一个时间和后一个时间分别可以指向哪一个时间,假设指向x,y,看x和y的状态和大小,如果x,y都已经使用过,表示无解,否则的话,选择较小的,并更新时间指向的状态 时间的指向状态更新需要…
题意:给出n场考试,每场考试有2天可以通过(第ai与bi天).每天最多参加一场考试,现在要求所有考试全部通过的最小天数 n<=1e6,1<=a[i]<b[i]<1e9 思路:From https://blog.csdn.net/qq_34454069/article/details/81835772 维护块内最大值,次大值,点数,边数 #include<cstdio> #include<cstring> #include<string> #inc…
题目传送门 传送门I 传送门II 传送门III 题目大意 有$n​$门科目有考试,第$i​$门科目有两场考试,时间分别在$a_i, b_i\ \ (a_i < b_i)​$,要求每门科目至少参加一场考试,不能在同一个时间参加两场考试,问最后参加的考试最早的时间是什么. 这几天,我怎么做的都是水题Emm.... 考虑先将$a_i, b_i$离散化. 对于每一门考试,在$a_i, b_i$间连一条无向边. 对于每个连通块,讨论: 如果边数大于点数,显然无解 如果边数等于点数,那么答案必须大于等于点权…
题意: 有n门考试,每门考试都有两个时间,存在几门考试时间冲突,求考完所有的考试,所用的最后时间的最小值 解析: 对于时间冲突的考试 就是一个联通块 把每个考试看作边,两个时间看作点,那么时间冲突的考试即为一个连通块 对于一个连通块 1.如果边数等于点数 即为一个基环树,那么明显 这个连通块的最后时间为 权值最大的点 2.如果边数小于点数 即为一个树,那么连通块的最后时间为 权值次大的点(画画图) 3.如果边数大于点数 那么就冲突了, 输出-1就好了 离散化一下 #include <bits/s…