12 2017 档案
摘要:A. Assignment Algorithm 按题意模拟即可。 B. Buffalo Barricades 首先通过扫描线求出最终的图中每个点属于哪个区域,以及包含每个区域的最小区域。 然后倒着处理每个询问,依次删掉每个栅栏,也就是将区域的点数合并,并查集维护。 时间复杂度$O((n+m)\log
阅读全文
摘要:A. Add and Reverse 要么全部都选择+1,要么加出高16位后翻转位序然后再补充低16位。 B. Analyze This bitset加速暴力。 C. Bipartite Graph 每个点向附近3个点连边即可。 D. Bridge Building 二分答案,那么对
阅读全文
摘要:枚举每个S作为原点,将所有D和T极角排序。 枚举每个T,那么另一个T需要和当前的T夹角不超过180度,贡献为内部D的个数。 双指针后用前缀和查询区间的贡献即可。 时间复杂度O(n2logn)。
阅读全文
摘要:A. Area of Effect 首先最优解中必有一个点在圆的边界上。 若半径就是R,则枚举一个点,然后把剩下的事件极角扫描即可,时间复杂度O(m(n+m)log(n+m))。 否则圆必然撞到了两个圆,枚举一个点以及两个圆,二分出最大的半径,然后统计内部点数即可,时间复杂度$O(n^2m
阅读全文
摘要:A. Cakey McCakeFace 按题意模拟即可。 B. Table 枚举下底边,求出每个位置向上延伸的最大长度,枚举每个位置作为右下角,那么单调栈中每一个子矩形都可以对长宽都不超过它的询问产生贡献,通过差分二维前缀和,那么O(1)单点修改即可。 为了避免枚举单调栈中每一项,可以在每一项退
阅读全文
摘要:A. Archery Tournament 用线段树套set维护横坐标区间内的所有圆,查询时在O(logn)个set中二分查找即可。 时间复杂度O(nlog2n)。 B. Box 分类讨论。 C. Connections 考虑强连通分量的Kosaraju算法,会发现只有$2(n-1)
阅读全文
摘要:从上到下枚举上下底边,那么涉及两行的添加和删除。 首先预处理出对于每一列,每个位置添加和删除时,是否会对往下k个里出现这个颜色造成影响。 然后对于每种颜色维护一个长度为m的bitset,表示哪些列出现过该颜色。 那么每次修改时,找到前驱和后继,对这一行答案的影响是一段区间加,差分前缀和即可。
阅读全文
摘要:求出Kruskal重构树,那么重构树上每个点的取值范围是定的。 考虑树形DP,则对于一个点,要么所有点水位相同,要么还未发生合并。 故dp[x]=up[x]−down[x]+1+dp[l[x]]×dp[r[x]]。 时间复杂度O(nmlog(nm))。
阅读全文
摘要:若1到n之间没有其它点,则1到n的距离为任意一点到它们距离的差值,按照距离关系判断每个点是挂在1上还是挂在n上即可。 否则1到n的距离只可能为任意一点到它们距离和的最小值,抽出1到n路径上所有点后,对于剩下的每个点判断它应该挂在那个点下面即可。 时间复杂度$O
阅读全文
摘要:A. Ascending Photo 贪心增广。 B. Boss Battle 当n≤3时显然1步就可以炸死。否则每次可以缩小一格,故答案为n−2。 C. Connect the Dots 留坑。 D. Dunglish 按题意模拟即可。 E. English Restauran
阅读全文