6.6上午
NO.1 来源 : UVa 1318 Monster Trap
分类: 计算几何,平面直线图
简要题解:
- 首先从所有线段的端点中出不在任何一条线段(端点不算)上的点的集合S,再加上 (0,0),(inf,inf) 这两个点。
- 对于
S
中的两个点
a,b ,如果线段 a,b 不和任何给出的线段相交,那么给 a,b 连上边。 - 但这样会在线段的公共端点处出现问题,解决的方案是把每条线段延长一点点,使原先有公共端点的线段相交。
- BFS判断 (0,0)→(inf,inf) 是否联通即可。
反思:
- 注意伸长量 delta与eps 的大小关系,取 delta=10−5,eps=10−10 可以过。
- 复习:判断线段相交,点在线段上。
6.6晚
NO.2 来源 : UVa 1340 Find the Border
分类: 计算几何,平面直线图(PSLG)
简要题解:
- PSLG模板。题解请看LRJ的白皮书。
反思:
- 对点进行排序时的浮点比较要用dcmp()。
6.8上午
NO.3 来源 : BZOJ 4184 shallot
分类: 分治,线性基
简要题解:
- 求一堆数可以异或出来的最大值,显然可以用线性基。
- 有删除操作怎么办?对时间进行分治,具体来说:
- 用一个类似线段树的结构,每个节点用一个vector存下对这个整个区间有贡献的数。
- 最后遍历这棵树,走到叶子节点就可以回答对应的询问。
- 线性基要当参数逐层传递,不能用一个全局变量。
反思:
- Hash大法好(比stl快至少一倍)。
- 但是要维护的东西比较麻烦(不像线性基可以当参数传递怎么办)?
6.8上午
NO.4 NKOJ 4140 ces
分类: 无向图的连通性
简要题解:
- 先考虑
k=1
的情况
- 如果是一棵树,那么答案就是直径的长度。
- 否则,将环缩成一个点之后形成的新的树的直径。
- 取新树的重心,可以保证树高为 logn 级别。
- 显然加入一条边可以使某条路径上的边全部变成不是桥,肯定贪心的选择最长的路径。
- 用一个堆维护所有的由桥边构成的单链(为了避免重复计算,路径应该被拆解成为单链)。
反思:
- 从树到图的桥梁——把环缩成点(也就是选代表节点,可以用并查集实现)。
- 从 k=1 到一般情形的转化——贪心+巧妙的讨论和维护路径。
6.8上午
NO.5 来源 : Codeforces Round #418 (Div. 2) E - An unavoidable detour for home
分类: dp,组合数学
简要题解:
- 可以发现最后的图一定形成类似树的结构,只不过同层之间可以连边。
- 考虑逐步加入一个点
x
(已经有
x−1 个点),设当前的层数为 l :
- 如果
l−1 这一层还有多余的度数, x 号点必须接在l−1 层的点下面,否则可以另起一层。
- 令
f(x,p1,p2,c1,c2)
表示加入
x
个点,
l−1 层上剩余1度、2度的点分别有 p1,p2 个, l 层上剩余1度、2度的点分别有c1,c2 个的方案数。
- 答案为 f(n,0,0,0,0) ,时间复杂度 O(n5)
反思:
- 转移比较多,每一种考虑清楚。特别是另起一层的时候容易错
6.10上午
NO.6 来源 : BZOJ 4205 卡牌游戏
分类:网络流
简要题解:
- 暴力构图+匈牙利算法复杂度可以得到35分.
- 考虑到按照匹配建图边数过多,我们采用将边分类的方法优化。
- 考虑a项属性值能被x整除且b项能力值能被y整除的所有点,只要是在两侧一定能够匹配,所以我们在匹配的网络流模型中间增加一排这样的点,满足要求的左右点分别与它相连,边权为正无穷。
- 考虑到x和y只需是质数,这样的点共有至多3*46*46个(1~200质数共46个),而200<2*3*5*7,所以两侧每个点至多连出3*3*3条边。
- 于是我们构成了一个70000个点,2000000条边的网络流,依然是分层图,所以dinic有极佳的速度优势,通过100分数据。
反思:
- 找到题目和最大匹配的相同性,利用特殊性来优化。
- 匹配在网络流上的表达就是两行点联通。
6.10下午
NO.7 来源 : BZOJ 4206 最大团
分类:计算几何,区间问题
简要题解:
- 对于每一个点,向圆作两条切线,切点之间的弧可以用一个极角区间 [li,ri] 来表示。
- 两个点 i,j 可以连边等价于 [li,ri]与[lj,rj] 相交并且不包含。
- 对极角区间排序之后,考虑从每一个点
i
开始
i→n 能组成的最大团:
- 对每一个满足 lj∈[li,ri],rj>ri 的 j (i<j≤n) ,将 rj 加入队列Q。
- 求Q的最长上升子序列即可。
反思:
- 如果采用到圆心的距离作为连边的判断依据,就不能转化为区间的问题,也没有很好的利用题目条件。
- 如果