CDQ分治
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[CDQ分治 并查集 || LCT] BZOJ 4025 二分图
Po姐的姿势:http://blog.csdn.net/popoqqq/article/details/45671813 LCT的做法: 考虑随便维护一个图的生成树,不难发现,如果一条边加入后,形成奇环的话就不是二分图 否则的话,我们可以无视这条边,因为如果之后再新加入一条边和这条边形成了一个奇环 那么新加入的边一定和原来生成树上的边也能形成奇环 所以我们直接维护一棵生成树即原创 2016-05-02 13:36:57 · 564 阅读 · 0 评论 -
[动态最小生成树 CDQ分治] SnackDown 2017 Online Elimination Round #GQUERY Game Revisited
给每条边的权值赋为编号 那么就相当于一个做kruskal的过程 也就是一个最小生成树的过程 跟BZOJ 2001 [Hnoi2010]City 城市建设一样? 被阿爷教导了 多年前的模板又臭又长#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typedef pair<int,int> abc原创 2017-06-06 15:15:58 · 616 阅读 · 0 评论 -
[背包 压位 CDQ分治] ICPC 2016 Hong Kong H. Slim Cut
有一个nn个点mm条边的图。 记一个割(S,T)(S,T)的slimness为跨在SS和TT之间边的边权最大值除以S和T的两个集合小的一个的大小。 找到一个slimness最小的割,输出slimness。 n≤14000,m≤30000n\leq14000,m\leq30000 时限5sdls太强辣 #include<cstdio> #include<cstdlib> #include<a原创 2017-03-30 08:20:42 · 860 阅读 · 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原创 2017-01-20 08:00:34 · 428 阅读 · 0 评论 -
[LCT维护最小生成树 || CDQ分治 || 线段树 并查集 dfs树] Codeforces 603E #334 (Div. 1) E. Pastoral Oddities
这是个好题啊 这种数据结构题和dfs树有什么关系呢 唯一的关系就是 一个联通块当且仅当有偶数个点时能满足存在边集的一个子集每个点度数为奇数 或者更一般的结论 当一个联通块中每个点的度数奇偶性要求之和是偶数 那么存在 然后我们就转化为一些边使得每个联通块为偶数 这个出题人的标算我没看懂啊 LCT在线维护最小生成树? http://codeforces.com/blog/entry/21原创 2017-01-04 16:45:31 · 1348 阅读 · 0 评论 -
[动态最小生成树 CDQ分治 Kruscal] BZOJ 2001 [Hnoi2010]City 城市建设
思路不难想 借鉴了其他人的代码:http://blog.sina.com.cn/s/blog_6e63f59e0101blum.html 两个关键的操作: Reduction(删除无用边): 把待修改的边标为INF,做一遍MST,把做完后不在MST中的非INF边删去(因为这些边在原图的情况下肯定更不可能选进MST的边集,即无用边); Contraction(缩必须边,缩点): 把待修原创 2016-07-13 16:19:54 · 944 阅读 · 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原创 2016-05-08 12:56:31 · 921 阅读 · 0 评论 -
[DP 斜率优化 CDQ分治||动态维护凸包] BZOJ 1492 [NOI2007]货币兑换Cash
打了个set维护凸包 cdq等待填坑 #include #include #include #include #include #include #define dprintf(...) fprintf(stderr,__VA_ARGS__) using namespace std; //typedef long double ld; typedef double ld; inline原创 2016-08-08 22:15:24 · 695 阅读 · 0 评论 -
[CDQ分治] BZOJ 2244 [SDOI2011]拦截导弹
%%% PoPoQQQ :http://blog.csdn.net/popoqqq/article/details/44962711 “第一问CDQ分治裸上 第二问用每个元素所在的LIS个数/总LIS个数就是答案 每个元素所在的LIS自己必选,然后统计前面的方案数和后面的方案数 以前面的方案数为例,令f[x]为以x结尾的LIS长度,那么有DP方程: g[i原创 2016-04-16 13:27:06 · 559 阅读 · 0 评论 -
[CDQ分治 凸包] BZOJ 2961 共点圆
%%% PoPoQQQ :http://blog.csdn.net/PoPoQQQ/article/details/42318247 “题目大意:给定平面,多次插入点和圆,每次插入点时询问当前插入的点是否在之前插入的所有圆中并且至少在一个圆中 直接用数据结构维护这些点和圆不是很好写,我们考虑CDQ分治 对于每层分治,我们需要对于[mid+1,r]中的每个点求出[l,mid原创 2016-04-18 18:41:44 · 478 阅读 · 0 评论 -
[CDQ分治 线性基] BZOJ 4184 shallot
代码应该都看得懂 #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef pair abcd; inline char nc() { static char buf[100000],*p1=buf,*p2原创 2016-07-12 19:34:11 · 637 阅读 · 0 评论