
并查集
wwt9b15bs
这个作者很懒,什么都没留下…
展开
-
【题解】洛谷P2024[NOI2001]食物链(同POJ1182)(8月7日校赛 并查集)并查集
思路参考了大佬题解图文并茂非常详细#include<cstdio>#define _rep(i,a,b) for(int i=(a);i<=(b);i++)const int N=5e4+10;int set[N*3];int n,k;int a,b,c;int cnt=0;int findset(int x){ return set[x]==x?...原创 2018-08-18 07:37:54 · 191 阅读 · 0 评论 -
【题解】洛谷P3958[NOIP2017]奶酪 并查集/dfs
打了一份并查集一份dfs的代码#include<cstdio>typedef long long ll;const int N=1e3+10;int set[N];ll n,h,r;struct node{ ll x,y,z;}hole[N];//存点 void init()//初始化代表元全为自己 { for(int i=0;i<=n+1;i+...原创 2018-10-08 11:09:57 · 668 阅读 · 0 评论 -
【题解】洛谷P1197[JSOI2008]星球大战(同bzoj1015) 并查集
题目链接 先正着跑一遍图,求出连通块个数,再倒着往图中新增节点,判断连通块个数有没有增加,最后正着输出结果#include&amp;lt;cstdio&amp;gt;#include&amp;lt;cstring&amp;gt;#define _rep(i,a,b) for(int i=(a);i&amp;lt;=(b);i++)#define _for(i,a,b) for(int i=(a);i&am原创 2018-09-05 07:19:46 · 210 阅读 · 0 评论 -
【题解】bzoj2200 并查集+拓扑排序+dijkstra+bfs
题目链接 由题意可以知道双向道路没有负边权,而单向负权路不构成环。如果把所有的道路单独添加到图里,会形成若干个连通块。把每个连通块看做一个点,把航线添加进图里,会形成DAG。可以在DAG上跑拓扑序,在线性时间里求出单元最短路。在每个连通块内部用堆优化的dijkstra。 步骤: 1.将所有道路添加到图中形成若干连通块,遍历每一个连通块记录每个节点所属的连通块编号(并查集); 2.将有向边添...原创 2018-08-31 14:48:39 · 391 阅读 · 0 评论 -
【题解】poj1733 带权并查集
题目链接 d[x]为0表示奇偶性相同,为1表示奇偶性不同。 d[x]xor d[y]为x与y的奇偶性关系,若d[x]xor d[y]≠ans则矛盾#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++)cons...原创 2018-08-28 19:34:29 · 203 阅读 · 0 评论 -
【题解】洛谷P1196[NOI2002]银河英雄传说 带权并查集
题目链接 改了快一个小时过不了样例,交上去AC了……可能这就是权贵吧#include&lt;cstdio&gt;#include&lt;cmath&gt;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++)using namespace std;const int N=3e4+10;int t;int fa[N],d[N],size[N...原创 2018-08-28 19:34:21 · 271 阅读 · 0 评论 -
【题解】洛谷P1955[NOI2015](同bzoj4195) 并查集+离散化
题目链接 对于每个相等的约束条件,合并所在集合;对于不等的约束条件,若两个变量处于同一集合内,则不可能被满足。#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++)#define _for(i,a,b) f...原创 2018-08-28 19:34:17 · 194 阅读 · 0 评论 -
【题解】洛谷P1111 并查集
题目链接 将公路按建成时间升序排序。维护并查集是增加一个记录子树个数的数组size。合并时让编号小的作为父亲,这样可以根据size[1]来判断是否全部通车。#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++...原创 2018-09-01 08:13:31 · 269 阅读 · 0 评论 -
【题解】poj1456 并查集+贪心
题目链接 贪心思想,按照利润大到小排序,优先安排。对于每个商品,在它能卖出的最晚时间卖出。可以用并查集来实现。建立一个关于“天数”的并查集。对于一个商品,如果在d天后过期,就查询d的树根r。如果r大于0,则安排在第r天卖出,令r为r-1的子节点。#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;#d...原创 2018-09-01 08:13:26 · 357 阅读 · 0 评论 -
【题解】poj3694 边双联通分量缩点+lca+并查集
题目链接 题目要我们求出每次操作后剩余桥的数量,可以想到首先将图中所有的割边统计并将所有e-DCC缩点得到一棵树。对于每次操作的u,v,考虑u,v是否属于同一e-DCC。显然属于的情况没有影响,而不属于则会使u,v所在e-DCC到lca的路径上的所有边为非割边。利用并查集的路径压缩可以跳过已经是非割边的树边,时间复杂度O(M+QlogN)#include&lt;cstdio&gt;#i...原创 2018-08-31 14:48:48 · 229 阅读 · 0 评论 -
【题解】hdu1213 并查集
这个格式要求是假的……不理它就过了#include&lt;cstdio&gt;#include&lt;cstring&gt;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++)int t,n,m;const int N=1e3+10;int set[N];bool vis[N];int findset(int x){ re...原创 2018-08-13 07:02:06 · 184 阅读 · 0 评论 -
【题解】hdu1878 欧拉回路+并查集
并查集判断图是否连通,再判断度数#include&lt;cstdio&gt;#include&lt;cstring&gt;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++)const int N=1010;int set[N];int deg[N];int findset(int x){ return set[x]==x?...原创 2018-08-13 07:02:26 · 197 阅读 · 0 评论 -
【题解】洛谷P1525关押罪犯[NOIP2010] 并查集+贪心
题目链接 最开始我写的最小生成树……后来发现理解错题意了 参考了大佬题解其中合并敌人的敌人这种操作非常巧妙#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;climits&gt;#include&lt;cstring&gt;#include&lt;algorithm&原创 2018-08-18 07:38:00 · 266 阅读 · 0 评论 -
【题解】洛谷P2661[NOIP2015]信息传递 并查集
题目链接求最小环。可以通过并查集判断是否成环了。统计环长度可以再写一个无路径压缩的并查集,暴力的跳上去找。#include<cstdio>#include<algorithm>using namespace std;const int N=2e5+10;inline int read(){ int s=0,f=0;char ch=getchar();...原创 2018-10-27 20:24:06 · 585 阅读 · 0 评论