![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
&*^*&
这个作者很懒,什么都没留下…
展开
-
acm -(并查集、启发式合并、gcd、枚举因子)2020 China Collegiate Programming Contest Changchun Onsite K. Ragdoll
传送门本题考虑直接对每个iii求出所有满足ij=gcd(i,j)i^j=gcd(i,j)ij=gcd(i,j)的jjj,然后存在ggg数组中,对于查询修改操作维护一个并查集即可,合并的时候采用启发式合并(小的往大的上合)核心问题在于如何初始化ggg数组,考虑到每个数的因子其实不多,不妨枚举因子即可,假设枚举的因子为ddd,a=kda=kda=kd,那么b=a xor db=a\,xor\,db=axord,然后检验一下是否满足gcd(a,b)=dgcd(a,b)=dgcd(a,b)=d即可,预处理复杂.原创 2020-12-03 09:42:48 · 200 阅读 · 0 评论 -
acm-(并查集、二分、平面点)Codeforces Round #671 (Div. 2)F. Rain of Fire
传送门本题主要是给定平面上n个点,你可以以任意点为起点沿着上下左右任意一个方向直线出发,只有遇到一个点的时候才能拐弯(或继续直走),然后问你走完所有点的时候途中经过相邻两点的最大距离最小是多少,不过题目还说可以在开始的时候插入一个点到平面上,保证所有给定的点都不重合。这种最大量最小化的问题很容易与二分扯上联系,我们不妨二分最大距离x,看看能不能让路线中的相邻两点距离都小于等于x,也就是check函数要完成的功能。首先容易发现如果a点能到达b点,b点能到达c点,那么a点一定能到达c点,这很符合连通块的.原创 2020-10-02 21:25:06 · 128 阅读 · 0 评论