[BZOJ 4025] 二分图

题目传送-BZOJ4025

题意:

有一张\(n\)个节点的无向图,其中边\(i\)\(s_i\)出现,\(e_i\)结束,并连接着节点\(x,y\).
并保证\(s_i < e_i \le T\),要求对于每个时间\(t\le T\)输出此时的图是否是二分图。
\(n\le100000,m\le200000,T\le100000\)

题解:

这是道好题,考到了线段树(分治)的思想,听说也叫整体二分?
考虑如何做一个区间(时间)[L,R]中的所有答案:
显然我们只考虑与这个区间有交集的边
分两种:完全覆盖这个区间,部分覆盖这个区间。
显然我们可以毫无顾虑的把第一类的边都加上
此时如果已经不是二分图了,那显然直接GG了
然后对于其它边我们只要递归下去处理就行了
如何判断二分图并支持对图的修改:
考虑按秩合并的带权并查集,这就不多说了
复杂度的证明:
空间:
观察发现每个区间的处理需要有一个边集
而每条边最多能在log个区间中出现(线段树的思想)
那么总共的空间需求就是\(m*log_2T\)
时间:
同样一条边只能与log个区间相关,也就是说它只能被删加log次
所以复杂度也是\(m*log_2T\)的?
不知道我这样分析对不对,貌似@zhouzhendong大佬说这是\(log^2\)

过程:

已更新至我都错题集-updating
并查集相关错误

代码:

const int N=100010,M=200010;
int n,m,T;
struct EDGE {int x,y,s,t;inline void in() {read(x); read(y); read(s); read(t); ++s;}
};
int ans[N];
int cnt=0;
namespace DSU {int val[N],dep[N],fat[N];struct TMP {int fx,fy,dx,dy;};//x merge to y -> dep[fx]<dep[fy]stack<TMP> sta;inline void Init() {for(int i=1;i<=n;i++) fat[i]=i,dep[i]=1,val[i]=0;}inline pii father(int x) {int ret=0;while(x!=fat[x]) ret^=val[x],x=fat[x];return mp(x,ret);}inline bool Merge(int x,int y) {pii tx=father(x),ty=father(y);int fx=tx.F,fy=ty.F,vx=tx.S,vy=ty.S;if(dep[fx]>dep[fy]) swap(fx,fy);int v=1^vx^vy;if(fx==fy) return v==0;sta.push((TMP) {fx,fy,dep[fx],dep[fy]});fat[fx]=fy; val[fx]=v;dep[fy]=max(dep[fy],dep[fx]+1);return true;}inline void Split(int to) {--cnt; assert(cnt>=0);while((int)sta.size()!=to) {// puts("?");assert(!sta.empty());TMP tmp=sta.top(); sta.pop();int fx=tmp.fx,fy=tmp.fy,dx=tmp.dx,dy=tmp.dy;dep[fx]=dx; dep[fy]=dy; fat[fx]=fx; val[fx]=0;}}
}
vector<EDGE> E;
void Solve(int S,int T,vector<EDGE> &E) {assert(S<=T);if((int)E.size()==0) {for(int i=S;i<=T;i++)ans[i]=1;return;}++cnt;vector<EDGE> EL,ER; EL.clear(); ER.clear();int top=DSU::sta.size(),mid=(S+T)>>1;for(int i=0;i<(int)E.size();i++) {EDGE e=E[i];if(e.s<=S && T<=e.t) {if(!DSU::Merge(e.x,e.y)) {// puts("???");for(int j=S;j<=T;j++)ans[j]=0;DSU::Split(top); return;} } else {if(e.s<=mid) EL.push_back(e);if(e.t> mid) ER.push_back(e);}}if(S==T) {ans[S]=1; DSU::Split(top); return;}Solve(S,mid,EL); Solve(mid+1,T,ER);DSU::Split(top); return;
}
signed main() {// freopen("10.in","r",stdin);// freopen("my.out","w",stdout);mem(ans,-1);read(n); read(m); read(T);DSU::Init();for(int i=1;i<=m;i++) {EDGE e; e.in(); E.push_back(e);}Solve(1,T,E);// for(int i=1;i<=n;i++) printf("%d ",ans[i]);for(int i=1;i<=n;i++) puts(ans[i] ? "Yes" : "No");return 0;
}
/*
3 3 3
1 2 0 2
2 3 0 3
1 3 1 2
*/

用时:1h

转载于:https://www.cnblogs.com/functionendless/p/9470217.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

晒一波工程师的工位,你喜欢哪种?

程序员的圈子啊那是十分神秘&#xff0c;又令人着迷的。每天的工作就是对着电脑&#xff0c;那他们的工作是如何的呢&#xff1f;我们来品一品&#xff08;PS&#xff1a;后面奉上各位大佬的桌面&#xff0c;别走开哦&#xff09;↓↓↓最最常见的普通版&#xff1a;升级版&…

传360以原彩虹QQ研发团队为班底拟强推IM

据知情人士透露&#xff0c;奇虎360开发即时通讯工具IM软件已成定局&#xff0c;正式推出只是时间问题。同时&#xff0c;该知情人还透露&#xff0c;目前负责360公司即时通讯软件项 目的核心班底正是51.com原“彩虹QQ”&#xff08;51.com对外官方产品名称为“彩虹显IP辅助软件…

linux无法安装php-fpm,Linux下的php-fpm相关问题解决

今天搭建LNMP环境时,在安装PHP编译的时候出现了问题,首先在解压安装包后配置检测环境./configure --prefix/usr/local/php \--with-gd \--enable-gd-native-ttf \--enable-mysqlnd \--with-mysqlmysqlnd \--with-pdo-mysqlmysqlnd \--with-openssl \--enable-mbstring \--enabl…

recovery.conf 用于 stream replication

recovery.conf 是 postgresql slave 数据库的重要文件&#xff0c;示例文件为. $ ls -l $PGHOME/share/recovery.conf.sample可以编辑 $PGDATA/recovery.conf 异步stream recovery_target_timeline latest standby_mode on primary_conninfo host192.168.56.201 port5432 us…

彻底搞懂系统调用

在应用程序开发过程中经常会进行IO设备的操作&#xff0c;比如磁盘的读写&#xff0c;网卡的读写&#xff0c;键盘&#xff0c;鼠标的读入等&#xff0c;大多数应用开发人员使用高级语言进行开发&#xff0c;例如C&#xff0c;C&#xff0c;java&#xff0c;python等&#xff0…

getimg()在java中,java – 使用getClass()加载资源getResource()

我正在尝试加载一个图像作为我的应用程序中的一个图标。根据这个tutorial的适当方法是&#xff1a;protected ImageIcon createImageIcon(String path, String description){java.net.URL imgURL getClass().getResource(path);if (imgURL ! null) {return new ImageIcon(imgU…

Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

0、目录 整体架构目录&#xff1a;ASP.NET Core分布式项目实战-目录 k8s架构目录&#xff1a;Kubernetes(k8s)集群部署&#xff08;k8s企业级Docker容器集群管理&#xff09;系列目录 一、感谢 在此感谢.net core社区的帮助。感谢。 二、系列部署目录 0、部署环境规划 1、自签T…

每天都用手机,你对麦克风了解吗?

简 介&#xff1a; 通过对于实际驻极体MIC进行拆解&#xff0c;看到其中的结构&#xff0c;对比起工作原理&#xff0c;实在令人难以想象它的工作机制是可行的&#xff0c;尽管现在它已经广泛应用在周围很多电子设备中。关键词&#xff1a; 驻极体&#xff0c;MIC01 驻极体话筒…

网络运维管理的质变

未来网络运维趋势 未来的网络发展趋势可以用三个多样化来概括&#xff0c;一是网络设备的多样化&#xff0c;二是网络组网方式的多样化&#xff0c;三是网络应用的多样化&#xff1b;再加上网络发展与信息化建设的紧密结合&#xff0c;这使得未来的网络运维工作面临着新的…

Java @responsebody,springMVC 使用注解@ResponseBody 不能返回JSON数据

控制器中代码RequestMapping(value "/listArea",method RequestMethod.GET)ResponseBodyprivate Map listArea(){Map modelMap new HashMap<>();List list areaService.getAreaList();modelMap.put("rows", list);modelMap.put("total"…

好了,我不想回深圳了~

国庆节算长假&#xff0c;一共七天&#xff0c;高速免费。如果一个人&#xff0c;待在家里睡上七天&#xff0c;可能我在第二天就会特别无聊&#xff0c;想找事情做&#xff0c;因为国庆离开深圳的人很多&#xff0c;我曾经有一次放假去球场打球&#xff0c;结果很失落&#xf…

开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器...

JeeWx捷微4.0 微服务版本发布^_^ 换代产品&#xff08;全新架构&#xff0c;全新UI&#xff0c;提供强大的图文编辑器&#xff09; JEEWX 从4.0版本开始&#xff0c;技术架构全新换代&#xff0c;采用微服务架构&#xff0c;插件式开发&#xff0c;每个业务模块都是独立的JAR…

手把手教用XNA开发winphone7游戏(三)

XNA Game Studio 游戏循环 在这部分中您将重点两剩余部分的游戏 — — 重写Update 和 Draw 功能。有些大大可能看过相关微软的训练包&#xff0c;我这里主要是帮一些初学者。希望各位大大包含&#xff0c;毕竟文章发出来还是有工作量的。大家觉得有用就好&#xff0c;要是没有耽…

我的代码很好,不需要写注释

作者 | Sheetal 译者 | 弯月 责编 | 王晓曼 有时候&#xff0c;我们会写一些非常有创意的注释&#xff0c;而有些注释确实让人不得不佩服 程序员的想象力。看到下面这些注释&#xff0c;相信每个人都会捧腹大笑。【1】#想了解递归&#xff0c;请参见文件末尾 . .&#xff08;代…

陈潇冰php,webpack4.x入门到进阶

课程详情(本课程所涉及内容)1. webpack是什么?webpack的作用2. webpack的整体构成3. webpack-cli、package.json4. 开发环境(development)和生产环境(production)&#xff0c;npm安装包的方式&#xff0c;-D、-S5. 跑一跑webpack6. webpack.config.js配置总览7. 入口配置形式&…

SpringBoot开发案例之整合Spring-data-jpa

什么是spring-data 为了简化程序与数据库交互的代码&#xff0c;spring提供了一个现成的dao层框架&#xff0c;spring家族提供的spring-data适用于关系型数据库和nosql数据库 什么是jpa JPA全称为Java持久性API&#xff08;Java Persistence API&#xff09;&#xff0c;JPA是j…

细说路由器

介绍以太网交换机工作在第二层即数据链路层&#xff0c;用于在同一网络内部转发以太网帧。但是&#xff0c;当源和目的IP地址位于不同网络时&#xff0c;以太网帧必须发送给路由器。路由器负责在不同网络间传输报文&#xff0c;通过路由表来决定最佳转发路径。当主机将报文发送…

时隔一年俺又回来了..

今年很不顺啊。。。各个方面。。。也有顺的。。。还是在平安做项目。。。私人项目有J2EE/PHP等&#xff0c;由于开发效率等问题&#xff0c;最后还是换上.NET。。批下JAVA。。开发效率太TMD低了。。不得不换。。。哈哈。。总的来说俺回来了。。今后更关注安全和嵌入式行业。。。…

java 动态转换器,Java 编程的动态性,第 5 部分: 动态转换类

Java 编程的动态性&#xff0c;第 5 部分: 动态转换类在经过一段时间的休息之后&#xff0c;Dennis Sosnoski 又回来推出了他的Java 编程的动态性系列的第 5 部分。您已在前面的文章中看到了如何编写用于转换 Java 类文件以改变代码行为的程序。在本期中&#xff0c;Dennis将展…

乔布斯,影响了一个时代的人

2011年10月5日&#xff0c;苹果公司的创始人史蒂夫乔布斯&#xff0c;因患胰腺神经内分泌肿瘤病逝&#xff0c;享年56岁&#xff0c;一代传奇人物&#xff0c;与世长辞乔布斯被认为是计算机业界与娱乐业界的标志性人物&#xff0c;同时人们也把他视作麦金塔计算机、iPod、iPhon…