关闭
当前搜索:

[并查集 杂题] BZOJ 4452 [Cerc2015]Export Estimate

关键就是一个观察 怎么判断是个环 在维护并查集的时候顺便维护下size和度数为2的点的size#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&...
阅读(160) 评论(0)

[CDQ分治 并查集] BZOJ 1453 [Wc]Dface双面棋盘

基本就是加边删边维护连通性的问题了 用并查集维护按时间分治做两遍就好了 #include #include #include #include using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1...
阅读(142) 评论(0)

[欧拉回路 并查集] Codeforces 547D #305 (Div. 1) D. Mike and Fish

这个题建图不难想 建成一个二分图 左边表示x右边表示y 然后在xy之间连边 奇点我们用一个额外点都连起来  然后就是找欧拉回路 用并查集 不然后T #include #include #include using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==...
阅读(260) 评论(0)

[LCT维护最小生成树 || CDQ分治 || 线段树 并查集 dfs树] Codeforces 603E #334 (Div. 1) E. Pastoral Oddities

这是个好题啊 这种数据结构题和dfs树有什么关系呢 唯一的关系就是 一个联通块当且仅当有偶数个点时能满足存在边集的一个子集每个点度数为奇数 或者更一般的结论 当一个联通块中每个点的度数奇偶性要求之和是偶数 那么存在 然后我们就转化为一些边使得每个联通块为偶数 这个出题人的标算我没看懂啊 LCT在线维护最小生成树? http://codeforces.com/blog/entry/21...
阅读(558) 评论(0)

[并查集] BZOJ 2919 [Poi1998]Word equations

所有的相同字母(包括0,1)的对应位置取值相等并且方程左右的对应位置取值相等,相等关系具有传递性,故我们使用并查集,每个位置作为一个元素,将所有取值要求相等的位置所对应的集合合并,那么有以下几种情况: 1.  左右长度不等,ans=0 2.  1与0被合并至一个集合,ans=0 3.  设k=不包含1与0的集合的个数,ans=2^k #include #include #inclu...
阅读(111) 评论(0)

[并查集 || 点分治 树重心] 2015 计蒜之道 复赛 京东的物流路径

官方题解: 本题有多种解法。首先是点分治的思想,在点分治的时候,我们每一次选取一个中心,先统计过中心的路径最大值,然后删掉中心,递归处理其它子树。统计过中心的路径最大值,我们以中心为根深度搜索一遍,一个需要注意的地方是路径的两个端点不能在同一子树内,因为这样可能会重复统计。所以我们把路径按子树分类,然后点权排序以后更新路径按子树分类的最大值和次大值,之和与当前点权的乘积就是答案。 本题还可...
阅读(171) 评论(0)

[删边最短路 并查集||线段树] BZOJ 2725 [Violet 6]故乡的梦 & 4400 tjoi2012 桥

首先求出一条S到T的最短路P,如果不是最短路上的边删了肯定不影响答案。 接着证明去掉一条边(u,v)之后最短路一定是这样存在一条边(x,y),然后最短路径是S->x->y->T,并且S->x,y->T都是原图中的最短路。 考虑S的最短路径图和T的最短路径图。 于是只要考虑一条边(x,y),然后求出S到x的最短路和这条最短路最早什么时候离开P,记作x’,同理求出y’。 于是(x,y)这条边可...
阅读(462) 评论(0)

[删边最短路 并查集] BZOJ 1576 [Usaco2009 Jan]安全路经Travel

hzwer是这么说的 首先用dijkstra得出最短路径树 然后 我的做法是树链剖分+线段树 对于一条不在最短路树的有向边(无向可看成两条有向)u-v,长度L,设t=lca(u,v) 那么对于t-v的路径上所有点x,都可通过1-t-u-v-x 路径长度为d[u]+L+d[v]-d[x] 最小化这个长度,也就是最小化d[u]+d[v]+L 所以我们...
阅读(148) 评论(0)

[双连通分量 缩点 并查集] POJ 3177 Redundant Paths & 3352 Road Construction

双连通分量缩点 并查集 竟然是第一次打 缩点后是一棵树 结论是(叶子节点+1)>>1  也就是每次取lca最浅的两个叶子连边 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline char nc(){ static char buf...
阅读(196) 评论(0)

[并查集 构造] Codeforces 723F#375 (Div. 2) F. st-Spanning Tree

并查集乱搞的构造 竟然因为return printf的返回值 无限RE #include #include #include using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,10000,st...
阅读(286) 评论(0)

[仙人掌 并查集 组合计数] BZOJ 4450 [Neerc2015]Cactus Jubilee

题意:给你一棵仙人掌,求有多少种方案使得移动一条边之后的图形仍是仙人掌。 题解: #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2...
阅读(440) 评论(0)

[并查集] BZOJ 4243 交朋友

Po姐说 把能进行会议的国家之间都用并查集连接起来,然后把每个进行过会议的国家扔进队列跑BFS,将搜到的国家用并查集连接  最终答案等于每个单点的出度个数+2*C(每个集合的大小,2)  #include #include #include #include #define V G[p].v using namespace std; typedef long long ll; ...
阅读(558) 评论(0)

[并查集 树] BZOJ 4551 [Tjoi2016&Heoi2016]树

本来想的二分加树链剖分 结果直接离线并查集可过 记录fat为上边的第一个有标记的祖先 #include #include #include #define V G[p].v using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1...
阅读(180) 评论(0)

[CDQ分治 并查集 || 随机化权值Xor] BZOJ 3237 [Ahoi2013]连通图

考虑CDQ分治 把这半边对后半边没有影响的操作做了 然后分治 用并查集维护 开个栈暴力还原 #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,s...
阅读(584) 评论(0)

[CDQ分治 并查集 || LCT] BZOJ 4025 二分图

Po姐的姿势:http://blog.csdn.net/popoqqq/article/details/45671813 LCT的做法: 考虑随便维护一个图的生成树,不难发现,如果一条边加入后,形成奇环的话就不是二分图 否则的话,我们可以无视这条边,因为如果之后再新加入一条边和这条边形成了一个奇环 那么新加入的边一定和原来生成树上的边也能形成奇环 所以我们直接维护一棵生成树即...
阅读(302) 评论(0)

[Random Heap 并查集] BZOJ 1455 罗马游戏

裸的可并堆 Random Heap 还是很兹瓷啊 #include #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fre...
阅读(195) 评论(0)

[乱搞 暴力 并查集] BZOJ 3563 DZY Loves Chinese

好神奇的一道题 不多说 最后一次询问暴力并查集 #include #include #include using namespace std; inline int read(int &x) { static char c=getchar(); for (;!(c>='0' && c<='9');c=getchar()) if (c=='\n' || c==EOF) return ...
阅读(236) 评论(0)

[分块 并查集] BZOJ 4537 [Hnoi2016]最小公倍数

题解:http://www.cnblogs.com/y7070/p/5412793.html 暴力分块 ”对于每一组,将符合一组a的询问选出来,将这些询问和这一块之前的边(a一定小于这些询问)按b排序,然后交替插入,询问,对于一个询问,在当前块也有可能有满足的边,我们将其加入,考虑后并撤销“ #include #include #include #include...
阅读(345) 评论(0)

[并查集 思路题] BZOJ 2503 相框

%%% PoPoQQQ http://blog.csdn.net/popoqqq/article/details/48031135 #include #include #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p...
阅读(251) 评论(0)

[平面图 并查集] BZOJ 4423 [AMPPZ2013]Bytehattan

平面图转化为对偶图,然后就会有些奇怪的性质可以利用 并查集维护 #include #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin)...
阅读(443) 评论(0)
    个人资料
    • 访问:309418次
    • 积分:12408
    • 等级:
    • 排名:第1311名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:54条
    最新评论