当前位置: 首页 > 编程日记 > 正文

bzoj 4025 二分图——线段树分治+LCT

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4025

线段树分治,用 LCT 维护链的长度即可。不过很慢。

正常(更快)的方法应该是线段树分治+并查集(按秩合并,链长可以暴力爬)或者 LCT 维护删除时间最大生成树。就不写了。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define ls Ls[cr]
#define rs Rs[cr]
#define lc c[x][0]
#define rc c[x][1]
#define pb push_back
using namespace std;
int rdn()
{int ret=0;bool fx=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-')fx=0;ch=getchar();}while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();return fx?ret:-ret;
}
const int N=1e5+5,M=2e5+5;
int n,m,fa[N],c[N][2],rev[N],siz[N],stk[N],tp;
int tot,Ls[M],Rs[M],top;
struct Node{int x,y;Node(int x=0,int y=0):x(x),y(y) {}
}sta[N];
vector<Node> vt[M];void build(int l,int r,int cr)
{if(l==r)return; int mid=l+r>>1;ls=++tot; build(l,mid,ls);rs=++tot; build(mid+1,r,rs);
}
void ins(int l,int r,int cr,int L,int R,Node k)
{if(l>=L&&r<=R){vt[cr].pb(k);return;}int mid=l+r>>1;if(L<=mid)ins(l,mid,ls,L,R,k);if(mid<R)ins(mid+1,r,rs,L,R,k);
}bool isrt(int x){return c[fa[x]][0]!=x&&c[fa[x]][1]!=x;}
void pshp(int x){siz[x]=siz[lc]+siz[rc]+1;}
void Rev(int x){if(rev[x]){rev[x]=0;rev[lc]^=1;rev[rc]^=1;swap(lc,rc);}}
void rotate(int x)
{int y=fa[x],z=fa[y],d=(x==c[y][1]);if(!isrt(y))c[z][y==c[z][1]]=x;fa[x]=z;fa[y]=x; fa[c[x][!d]]=y;c[y][d]=c[x][!d]; c[x][!d]=y;pshp(y); pshp(x);
}
void splay(int x)
{stk[tp=1]=x;for(int k=x;!isrt(k);k=fa[k])stk[++tp]=fa[k];for(int i=tp;i;i--)Rev(stk[i]);int y,z;while(!isrt(x)){y=fa[x]; z=fa[y];if(!isrt(y))( (x==c[y][0])^(y==c[z][0]) )?rotate(x):rotate(y);rotate(x);}
}
void access(int x)
{for(int t=0;x;splay(x),rc=t,pshp(x),t=x,x=fa[x]);
}
void mkrt(int x)
{access(x); splay(x); rev[x]^=1;
}
void split(int x,int y)
{mkrt(x); access(y); splay(y);
}
bool link(Node k)
{int x=k.x, y=k.y; split(x,y);int cr=y; while(c[cr][0])cr=c[cr][0];if(cr==x) return (siz[y]&1);sta[++top]=k; fa[x]=y; return false;
}
void cut(Node k)
{int x=k.x, y=k.y; split(x,y);c[y][0]=fa[x]=0; pshp(y);
}
void solve(int l,int r,int cr)
{int sz=vt[cr].size(); bool flag=0;for(int i=0;i<sz;i++){flag=link(vt[cr][i]); if(flag)break;}if(flag){for(int i=l;i<=r;i++)puts("No");return;}if(l==r){puts("Yes");return;}int mid=l+r>>1,nw=top;solve(l,mid,ls); for(int& i=top;i>nw;i--)cut(sta[i]);solve(mid+1,r,rs); for(int& i=top;i>nw;i--)cut(sta[i]);
}
int main()
{n=rdn();int T=rdn();m=rdn();tot=1;build(1,m,1);for(int i=1;i<=n;i++)siz[i]=1;for(int i=1,u,v,st,en;i<=T;i++){u=rdn();v=rdn();st=rdn()+1;en=rdn();ins(1,m,1,st,en,Node(u,v));}solve(1,m,1); return 0;
}

转载于:https://www.cnblogs.com/Narh/p/10372849.html

相关文章:

黑盒测试之功能分解法

功能分解法前言概念需求示例测试用例分析设计总结前言 首先和各位道个歉&#xff0c;最近事情比较多&#xff0c;本来计划的一周一更推迟了这么久。今天咱们继续&#xff0c;开始黑盒测试方法部分的分享。 概念 在学习软件测试的时候经常听到功能分解法&#xff0c;很多人项…

java中Class.forName与new

一、使用Class.forName 1、装载类 Class clazz Class.forName("xx.xx.xx"); 2、初始化对象 clazz.newInstance() 二、使用 new new Object(); 使用Class.forName的好处&#xff0c; 比如加载数据库驱动&#xff0c;若更换数据库&#xff0c;则需要更换驱动。 如果使…

UVA 10041 Vito's Family

UVA_10041这个题目是一个贪心的题目。如果设按升序排列的si的数组为s[]&#xff0c;那么Vito的位置一定为s[(r-1)/2]。对于这一点&#xff0c;我们分两种情况进行讨论&#xff1a;①如果si的数量为奇数&#xff0c;那么Vito的位置一定取数组s[]中间的那个值s[(r-1)/2]。因为如果…

数据结构杂题集

Codechef SD ER • 给出一棵树&#xff0c;维护点集 ?&#xff08;加点删点&#xff09; • 如果 ? 的大小是偶数&#xff0c;输出&#xff1a;如果将 ? 中的点两两连上边权为树上距离的边&#xff0c;那么 ? 里的最小权完美匹配是多少• ?, ? ≤ 10^6 考虑边的贡献 交叉…

黑盒测试方法之等价类划分法

等价类划分法 概念需求示例测试用例分析设计总结概念 等价类是指某个输入域的子集,在该子集中每个输入数据的作用是等效的,也就是该子集中每个输入数据的揭错概率是一样的。等价类分为有效等价类和无效等价类。 等价类划分法是将输入数据分成若干个子集,从每个子集选取一个…

JSEL 表达式

JSTL标签库的使用是为类弥补html表的不足&#xff0c;规范自定义标签的使用而诞生的。在告别modle1模式开发应用程序后&#xff0c;人们开始注重软件的分层设计&#xff0c;不希望在jsp页面中出现java逻辑代码&#xff0c;同时也由于自定义标签的开发难度较大和不利于技术标准化…

JavaEE程序员必读图书大推荐 .

下面是我根据多年的阅读和实践经验&#xff0c;给您推荐的一些图书&#xff1a; 第一部分&#xff1a; Java语言篇 1 《Java编程规范》 星级&#xff1a; 适合对象&#xff1a;初级&#xff0c;中级 介绍&#xff1a;作者James Gosling&#xff08;Java之父&#xff09;&#x…

10 个深恶痛绝的 Java 异常。。

异常是 Java 程序中经常遇到的问题&#xff0c;我想每一个 Java 程序员都讨厌异常&#xff0c;一 个异常就是一个 BUG&#xff0c;就要花很多时间来定位异常问题。 什么是异常及异常的分类请看这篇文章&#xff1a;一张图搞清楚 Java 异常机制。今天&#xff0c;栈长来列一下 J…

黑盒测试方法之边界值分析法

边界值分析法 概念需求示例1测试用例分析设计1需求示例2测试用例分析设计2总结概念 很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以更有效地发现缺陷。 边界值分析法测试用例设计方法:1)确定边界情况(输入或输出等价类的边界);2)选取正…

leetcode381. Insert Delete GetRandom O(1) - Duplicates allowed

题目要求 Design a data structure that supports all following operations in average O(1) time.Note: Duplicate elements are allowed. insert(val): Inserts an item val to the collection. remove(val): Removes an item val from the collection if present. getRando…

js 判断 是否为android

引用&#xff1a;http://www.oschina.net/code/snippet_163910_6094 [代码] JavaScript判断方法 view source print?1if(navigator.userAgent.match(/Android/i)) {2 // Do something!3 // Redirect to Android-site?4 window.location http://android.davidwalsh.nam…

B - Networking - poj 1287

有一些地方需要铺盖电缆&#xff0c;这些地方两点间的路可能不止一条&#xff0c;需要求出来至少需要多少电缆才能让所有的点都连接起来&#xff0c;当然&#xff0c;间接连接也算。/#include<iostream>#include<cstring>#include<cstdio>#include<queue&…

因果图方法中的基本符号

因果图方法中的基本符号 前言基本符号1、恒等2、非3、或4、与5、互斥6、包含7、唯一8、要求9、屏蔽总结前言 经过了春节假期,我们重新回到工作学习中。在学习因果图法前首先要学习因果图方法中的基本符号,今天我们就先解决这些基本符合。 基本符号 1、恒等 恒等:表示原因与…

BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )

假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) 1, 所以 answer ∑ phi(i) * 2 2 - 1 ∑phi(i) * 2 1 ( 1 < i < n ). 2是因为(1, 0), (0, 1) 两个点, -1是因为(1, 1)重复计算了--------------------------------------------…

JavaScript数据结构与算法——字典

1.字典数据结构 在字典中&#xff0c;存储的是【键&#xff0c;值】对&#xff0c;其中键名是用来查询特定元素的。字典和集合很相似&#xff0c;集合以【值&#xff0c;值】的形式存储&#xff0c;字典则是用【键&#xff0c;值】对的形式存储。字典也称作映射。 2.创建字典 f…

ArcObjects编程方法(七):.NET中继承ArcGIS COM类

要符合作为基类的要求&#xff0c;coclass必须满足&#xff1a; 定义为元数据可创建聚合然而在ArcGIS中&#xff0c;ArcGIS COM类不能在.NET环境中作为基类。如果要想方便的创建ArcGIS组件&#xff0c;可以使用ESRI.ArcGIS.ADF.Local程序集中提供的类&#xff0c;这些类是托管类…

黑盒测试方法之因果图法

因果图法 因果图法步骤软件需求示例测试用例分析设计总结因果图法步骤 1)赋标识符。分析软件需求规格说明,找出哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符; 2)画因果图。分析软件需求规格说明,找出原因与…

Git指南-基础篇

一&#xff0c;Git简介 对于一个刚接触Git的同学来说&#xff0c;Git是一个新鲜的东西&#xff0c;为了对Git有更深的了解&#xff0c;强烈推荐一篇博文&#xff1a;Git与Repo入门 它介绍了版本控制的历史&#xff0c;从原始的版本控制&#xff08;即原型-备份-复制-修改-备份-…

silverlight与javascript交互操作

C#端代码&#xff1a; String text "lenny";string text2 "dou";HtmlPage.Window.Invoke("calledBySL2", new object[] { text, text2 }); Html端代码&#xff1a; function calledBySL2(obj, obj2) { alert("Hello: " obj …

JS异步编程之callback

为什么 JS 是单线程&#xff1f; 众所周知&#xff0c;Javascript 语言的执行环境是"单线程"&#xff08;single thread&#xff09;。 所谓"单线程"&#xff0c;就是指一次只能完成一件任务。如果有多个任务&#xff0c;就必须排队&#xff0c;前面一个任…

黑盒测试之两两组合方法

两两组合方法 概念需求示例测试用例分析设计总结概念 所有测试数据两两配对,每一对数据至少出现一次,这个是两两组合测试的基本原理,两两组合测试也称结对测试(Pairwise Testing)。大部分缺陷是在进行两个变量取值冲突的测试时被发现的,不仅仅是在所有的组合情况下才会被…

用JavaScript获取一个超链接的绝对URL地址

对于Web程序员来说&#xff0c;处理简单的URL格式也许会成为一场噩梦。试想一下&#xff0c;一个网址里有很多组成部分都会影响你对它的解析方法&#xff1a; 是否以/字符开头是否以//开头是否以?号开头是否以#号开头…等等当你想要这个地址的绝对地址时&#xff0c;如何判断处…

Docker学习笔记_安装ActiveMQ

一、实验环境 1、宿主机OS:Win10 64位 2、虚拟机OS:Ubuntu18.04,虚拟机名称&#xff1a;Ubuntu18VM1&#xff0c;虚拟机IP:192.168.8.25 3、操作账号 &#xff1a;Docker 4、在虚拟机上已安装Docker 二、安装 简要步骤&#xff1a; 1.搜索镜像 sudo …

Ubuntu下配置Nginx HTTPS

HTTPS(全称&#xff1a;Hypertext Transfer Protocol over Secure Socket Layer)&#xff0c;是以安全为目标的HTTP通道&#xff0c;简单讲是HTTP的安全版。即HTTP下加入SSL层&#xff0c;HTTPS的安全基础是SSL。 它是一个URI scheme(抽象标识符体系)&#xff0c;句法类同http:…

因0x764fb11c的错误状态_《最强大脑》国际赛王易木又被质疑作弊,因背反答案露出了马脚?...

《最强大脑之燃烧吧大脑》第二季国际赛最后一场&#xff0c;中国战队和国际战队在3V3的团战当中以绝对优胜的姿态拿下了本场比赛。在观众为郑林楷、宋一骜以及王易木的成功感到高兴之际&#xff0c;有部分吃瓜群众跳出来指出&#xff0c;之前因作弊而饱受质疑的王易木此次又有了…

[PyQt4]项目开发中遇到的错误与解决办法

1假如将ui文件py化以后产生的关于界面的类是继承object的ui_dialog&#xff0c;方法是setupui,则在主程序中应&#xff1a; app QtGui.QApplication(sys.argv)dialogQtGui.QWidget()ud Ui_Dialog()ud.setupUi(dialog)dialog.show()sys.exit(app.exec_()) 2自建槽checklog_slo…

判断出栈顺序是否正确(栈的压入、弹出序列)

输入两个整数序列。其中一个序列表示栈的push顺序&#xff0c;判断另一个序列有没有可能是对应的pop顺序。为了简单起见&#xff0c;我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5&#xff0c;那么4、5、3、2、1就有可能是一个pop系列。因为…

LeetCode-135-Candy

算法描述&#xff1a; There are N children standing in a line. Each child is assigned a rating value. You are giving candies to these children subjected to the following requirements: Each child must have at least one candy.Children with a higher rating get…

消控中心人员配置_物业公司(项目)各岗位员工配置人数及标准(供参考)

一物业定编的目的1、优化编制结构&#xff0c;加强编制规模的合理化, 满足项目物业系统的人员需求&#xff1b;2、通过编制管理逐步&#xff0c;提升各大区住宅物业服务中心人均管理面积&#xff1b;3、通过编制管理达到物业系统整体扭亏的目标。二物业定编的能效目标1、费用控…

weblogic域,管理服务器,受管服务器,集群和机器的基本知识

1.域&#xff08;Domain&#xff09; •它是什么&#xff1f;–是一个逻辑上管理的WebLogic Server组&#xff0c;这些组从管理上当作一个整体来操作•域里面有什么?–服务器–服务器集群–机器•规则:–同一个域中的所有WebLogic服务器实例必须处于同样的版本。–域中的服务器…