/*
思维难度几乎没有, 就是线段树分治check二分图
判断是否为二分图可以通过维护lct看看是否链接出奇环
然后发现不用lct, 并查集维护奇偶性即可 但是复杂度明明一样哈 */
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<iostream>
#define f1 first
#define f2 second
#define ll long long
#define mmp make_pair
#define lson l, mid, now << 1
#define rson mid + 1, r, now << 1 | 1
#define ls now << 1
#define rs now << 1 | 1
#define M 100010
using namespace std;
int read() {
int nm = 0, f = 1;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for(; isdigit(c); c = getchar()) nm = nm * 10 + c - '0';
return nm * f;
}
vector<pair<int, int> > seg[M << 2]; int n, m, t, father[M], sz[M], ans[M], dis[M];
int find(int x) {
return father[x] == x ? x : find(father[x]);
} int getdis(int x) {
return father[x] == x ? 0 : getdis(father[x]) ^ dis[x];
}
void modify(int l, int r, int now, int ln, int rn, pair<int, int> v) {
if(l > rn || r < ln) return;
if(l >= ln && r <= rn) {
seg[now].push_back(v);
return;
}
int mid = (l + r) >> 1;
modify(lson, ln, rn, v);
modify(rson, ln, rn, v);
} void work(int l, int r, int now) {
int mid = (l + r) >> 1, f = 0;
vector<pair<int, int> > tmp;
for(int i = 0; i < seg[now].size(); i++) {
int vi = seg[now][i].f1, vj = seg[now][i].f2;
int a = find(vi), b = find(vj);
if(a == b) {
if((getdis(vi) ^ getdis(vj)) == 0) {
f = 1;
break;
}
} else {
if(sz[a] > sz[b]) swap(a, b), swap(vi, vj);
sz[b] += sz[a];
dis[a] = dis[vi] ^ dis[vj] ^ 1;
father[a] = b;
tmp.push_back(mmp(a, b));
}
}
if(!f) {
if(l == r) ans[l] = 1;
else work(lson), work(rson);
}
for(int i = tmp.size() - 1; i >= 0; i--) {
int a = tmp[i].first, b = tmp[i].second;
father[a] = a;
dis[a] = 0;
sz[b] -= sz[a];
}
}
int main() {
n = read(), m = read(), t = read();
for(int i = 1; i <= n; i++) father[i] = i, sz[i] = 1;
for(int i = 1; i <= m; i++) {
int vi = read(), vj = read(), be = read(), ed = read();
modify(1, t, 1, be + 1, ed, mmp(vi, vj));
}
work(1, t, 1);
for(int i = 1; i <= t; i++) puts(ans[i] ? "Yes" : "No");
return 0;
}

bzoj4025二分图(线段树分治 并查集)的更多相关文章

  1. [BZOJ4025]二分图(线段树分治,并查集)

    4025: 二分图 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2191  Solved: 800[Submit][Status][Discuss] ...

  2. 2018.09.30 bzoj4025: 二分图(线段树分治+并查集)

    传送门 线段树分治好题. 这道题实际上有很多不同的做法: cdq分治. lct. - 而我学习了dzyo的线段树分治+并查集写法. 所谓线段树分治就是先把操作分成lognlognlogn个连续不相交的 ...

  3. BZOJ4025 二分图(线段树分治+并查集)

    之前学了一下线段树分治,这还是第一次写.思想其实挺好理解,即离线后把一个操作影响到的时间段拆成线段树上的区间,并标记永久化.之后一块处理,对于某个节点表示的时间段,影响到他的就是该节点一直到线段树根的 ...

  4. BZOJ3237:[AHOI2013]连通图(线段树分治,并查集)

    Description Input Output Sample Input 4 5 1 2 2 3 3 4 4 1 2 4 3 1 5 2 2 3 2 1 2 Sample Output Connec ...

  5. Bzoj1018/洛谷P4246 [SHOI2008]堵塞的交通(线段树分治+并查集)

    题面 Bzoj 洛谷 题解 考虑用并查集维护图的连通性,接着用线段树分治对每个修改进行分治. 具体来说,就是用一个时间轴表示图的状态,用线段树维护,对于一条边,我们判断如果他的存在时间正好在这个区间内 ...

  6. BZOJ 1018: [SHOI2008]堵塞的交通traffic(线段树分治+并查集)

    传送门 解题思路 可以离线,然后确定每个边的出现时间,算这个排序即可.然后就可以线段树分治了,连通性用并查集维护,因为要撤销,所以要按秩合并,时间复杂度\(O(nlog^2 n)\) 代码 #incl ...

  7. BZOJ3237 AHOI2013连通图(线段树分治+并查集)

    把查询看做是在一条时间轴上.那么每条边都有几段存在时间.于是线段树分治就好了. 然而在bzoj上t掉了,不知道是常数大了还是写挂了. 以及brk不知道是啥做数组名过不了编译. #include< ...

  8. BZOJ4025 二分图 线段树分治、带权并查集

    传送门 如果边不会消失,那么显然可以带权并查集做(然后发现自己不会写带权并查集) 但是每条边有消失时间.这样每一条边产生贡献的时间对应一段区间,故对时间轴建立线段树,将每一条边扔到线段树对应的点上. ...

  9. bzoj4025-二分图【线段树分治,并查集】

    正题 题目链接:https://darkbzoj.tk/problem/4025 题目大意 \(n\)个点\(m\)条边,每条边会在一个\(T\)以内的时间段内出现,对于任意一个\(T\)以内的时刻求 ...

随机推荐

  1. 微信小程序登录(包括获取不到unionid的情况)

    我们一般都是先获取到微信的 unionid,然后再通过 unionid 去登录自己的网站,就可以关联到用户在自己网站上的 user_id,但是在小程序登录中,有时候可以获取到 unionid,有时候获 ...

  2. parallel::ForkManager

    use Parallel::ForkManager; my $MAX_PROCESSES=10;   #申明最大进程数(一次创建的进程越多,越耗内存): my $pm = new Parallel:: ...

  3. PHP常用函数(一):数组常用函数

    1.list() list() 和 array() 一样,不是一个函数,而是一个语言结构,作用是为一组变量赋值.  PHP手册中的介绍 使用详情 <?php //假设现在想为$a $b $c三个 ...

  4. 8th week blog

    1.indexof() indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始,没有返回-1:方便判断和截取字符串!indexOf()定义 ...

  5. Wpf TemplateBinding

    TemplateBinding. ControlTemplate最终会被用到一个控件上,我们称这个控件为模板目标控件或者模板化控件,ControlTemplate里面的控件可以使用TemplateBi ...

  6. 整合spring+springmvc+mybatis

    开发环境: jdk 1.8 eclipse 4.7.0 (Oxygen) tomcat 8.5.29 mysql 5.7 开发前准备: spring 框架的jar包,在这里使用的是spring-5.0 ...

  7. 【bug记录】OS Lab4 踩坑记

    OS Lab4 踩坑记 Lab4在之前Lab3的基础上,增加了系统调用,难度增加了很多.而且加上注释不详细,开玩笑的指导书,自己做起来困难较大.也遇到了大大小小的bug,调试了一整天. 本文记录笔者在 ...

  8. 第五章jQuery

    DOM文档加载的步骤 解析HTML结构. 加载外部脚本和样式表文件. 解析并执行脚本代码. DOM树构建完成. 加载图片等外部文件. 页面加载完毕. 执行时间不同 window.onload必须等到页 ...

  9. linux下突破10万高并发的nginx性能优化经验

    一.这里的优化主要是指对nginx的配置优化,一般来说nginx配置文件中对优化比较有作用的主要有以下几项:1)nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数.worke ...

  10. 2018-2019-2 网络对抗技术 20165308 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165308 Exp1 PC平台逆向破解 NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP汇编指令:执行到NOP指令时,CPU仅仅当做一个 ...