#Loj121 动态图连通性

MATLAB的动态图,伪色彩图、矢量图、流线图,散点图折线图的绘制例子--流体力学;LBM 还是老规矩先宣传一下QQ群群: 格子玻尔兹曼救星:293267908。免费群!一切为了早日毕业。 最近群友问画图的挺多,伪色彩图、矢量图、流线图,我在这里贡献一下自己的画图代码算是给大家提供参考。 1 流线图。 用任何语言生成的xy坐标和uv速度场,怎么画流线图和矢量图呢,MATLAB提供streamslice函数: %From https://ww2.mathworks.cn/help/matlab/ref/streamslice.html hh=streamslice(ux',u 阅读详情
AI摘要

这篇博客介绍了如何使用线段树分治方法来处理动态图的连通性问题,包括加入和删除边的操作,并提供了一个样例解释了线段树分治在处理此类问题中的应用和优势。

Description

你要维护一张无向简单图。你被要求加入删除一条边及查询两个点是否连通。
0:加入一条边。保证它不存在。
1:删除一条边。保证它存在。
2:查询两个点是否联通。

Input

输入的第一行是两个数 N,M。N≤5000,M≤500000。
接下来 M行,每一行三个数 op x y。op表示操作编号。

Output

对于每一个 op=2的询问,输出一行 Y 或 N ,表示两个节点是否连通。

Sample Input

200 5

2 123 127

0 123 127

2 123 127

1 127 123

2 123 127

Sample Output

N

Y

N

Hint

样例输入2
4 10
0 1 2
0 2 3
0 3 1
2 1 4
0 4 3
2 1 4
1 2 3
2 1 4
1 1 3
2 1 4
样例输出2
N
Y
Y
N

图的连通性= =容易想到用并查集来维护,然而并查集不支持删除操作啊o((⊙﹏⊙))o

这里介绍一个套路——线段树分治。

首先,这是一个离线算法,是以时间进行的分治,一般用来搞添加(删除)容易但删除(添加)困难的题目。

然后,这里仅介绍一点点其应用,因为代码量略大敲着太痛苦(然而它号称只要不在线,什么都能可持久),dalao可以挑战。

嗯,我们就用线段树分治来搞这道题,再讲一下分治的模型:

1、根据时间给节点打标记

2、跑一遍线段树

感觉好像什么都没说233

#include<bits/stdc++.h>
using namespace std;
#define Inc(i,L,R) for(register int i=(L);i<=(R);++i)
#define Red(j,R,L) for(register int j=(R);j>=(L);--j)
const int N = 5010,M = 5e5+10;
struct Data{
	int x,y;
};
Data e[M],q[M];
int cnte,cntq;
struct Union{
	int p[N],siz[N];
	stack<Data>stk;//我们开一个栈来保存合并了哪些点 
	inline void Reset(int n){
		Inc(i,1,n)p[i]=i;
		Inc(i,1,n)siz[i]=1;
	}
	inline int Findfa(int x){
		while(x!=p[x])x=p[x];
		return x;
	}
	inline void Merge(int idx){
		int x=e[idx].x,y=e[idx].y;
		int fx=Findfa(x),fy=Findfa(y);
		if(fx==fy)return ;
		if(siz[fx]>siz[fy])swap(fx,fy);
		stk.push((Data){fx,fy});
		siz[p[fx]=fy]+=siz[fx];
	}
	inline void Delete(int Presiz){//撤销操作 
		while(stk.size()>Presiz){
			Data tmp=stk.top();stk.pop();
			siz[tmp.y]-=siz[p[tmp.x]=tmp.x];
		}
	}
	inline bool Connect(int idx){
		return Findfa(q[idx].x)==Findfa(q[idx].y);
	}
}u;
struct SegMent{
	struct Tree{
		bool Loc;
		int L,r,idx;
		vector<int>vec;//存储边的编号 
	}t[M<<2];
	#define Ls v<<1
	#define rs v<<1|1
	inline void build(int v,int L,int r){
		t[v]=(Tree){0,L,r,0};
		t[v].vec.clear();
		if(L==r)return ;
		int Mid=L+r>>1;
		build(Ls,L,Mid),build(rs,Mid+1,r);
	}
	inline void update(int v,int A,int b,int idx){//每条边在哪些时刻出现过 
		if(t[v].L>b||t[v].r<A)return ;
		if(A<=t[v].L&&t[v].r<=b)return t[v].vec.push_back(idx),void();
		update(Ls,A,b,idx),update(rs,A,b,idx);
	}
	inline void LocQ(int v,int Time,int idx){
		if(t[v].L>Time||t[v].r<Time)return ;
		t[v].Loc=1;//小加速?不用完全遍历整个区间 
		if(t[v].L==t[v].r)return t[v].idx=idx,void();//问题的编号 
		LocQ(Ls,Time,idx),LocQ(rs,Time,idx);
	}
	inline void Stat(int v){
		if(!t[v].Loc)return ;
		int tmpsiz=u.stk.size();
		if(t[v].vec.size())Inc(i,0,t[v].vec.size()-1)u.Merge(t[v].vec[i]);
		if(t[v].L==t[v].r)return u.Connect(t[v].idx)?puts("Y"):puts("N"),void();
		Stat(Ls),Stat(rs);
		u.Delete(tmpsiz);
	}
}t;
int n,m,pre[M];
#define pr pair
#define mkpr make_pair
map<pair<int,int>,int>op;
inline void init(){
	scanf("%d%d",&n,&m);
	t.build(1,1,m);//以时间分治
	u.Reset(n);
	Inc(i,1,m){
		int opt,x,y;scanf("%d%d%d",&opt,&x,&y);
		if(x>y)swap(x,y);//看样例 
		if(opt==0){
			e[op[mkpr(x,y)]=++cnte]=(Data){x,y};
			pre[cnte]=i;
		}else if(opt==1){//删除代表这条边只在之前的某个时刻到现在i(i-1)时间存在 
			int idx=op[mkpr(x,y)];
			t.update(1,pre[idx],i,idx);//-1无所谓 
			pre[idx]=-1;
		}else {
			q[++cntq]=(Data){x,y};
			t.LocQ(1,i,cntq);
		}
	}
	Inc(idx,1,m)if(~pre[idx])t.update(1,pre[idx],m,idx);
}
int main(){
	init();
	t.Stat(1);
	return 0;
}

 

520表白季,教你用matlab画动态心形曲线图,可自动保存GIF格式图片,送给女朋友,她们一定会惊讶,赶紧收藏!!! 昨天发表了一篇用python教你画心形图表白的文章: 想要表白的看这里,教你用python画不同类型的心形图虏获芳心,值得收藏!! 里面详细介绍了各种心形图的画法以及最终的表白神器,值得点赞收藏!! 同样matlab也可以实现相同的功能并且还可以做得更好,今天就用教你用matlab画动态心形曲线图,不信请看下面: 虏获芳心matlab画动态心形曲线图matlab画动态心形曲线图(基础版)matlab画3D心形图备注 matlab画动态心形曲线图 利用数学上的格式f(x)=x^2^/^3+e/3*(π-x^2 阅读详情

相关推荐

我爱你-表白源码html动态图

我爱你-表白源码html动态图 效果演示http://www.lmtaolu.cn/biaobai/iloveyou/

韩式多用动态图(浪漫情侣)

 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=hand; this.alt=点击查看大图; this.title=点击查看大图;}" src="http://p8.images22.51img1.com/6000/xiayu8059/8a339b19d0b178

小小的素材库 49万+

51单片机STC8G1K08驱动ws2812记录

使用51单片机控制17个2812灯,这里选择STC8芯片,最大频率可以达到35M,参考网上的各种文章案例,使用定时器做的时候实测做不到规格书要求的245-345ns,STC8G1K08不带PWM,所以只能使用nop来做,好在单片机在这里只有做编程灯的功能,省略测试过程,下面是程序,使用的是24MHz内部晶振 //设置一个灯珠 void SendOnePix(unsigned char *ptr) { unsigned char i,j; unsigned char temp; fo...

的博客 7320

博客 Gif 动态图制作 - 插入gif动态图 GifCam

安利一个小软件,可以非常简单的制作动态图 下载地址:https://www.jianguoyun.com/p/DUeV-jAQ4aaCBxiWvJwB (访问密码:wij6zi) 打开软件点击 - Rec即可开始录制,下来按钮可以选择参数 ,我这次选的是10FPS,这个是录制图片的质量参数,值越大所占存储空间越大。 详细使用教程:https://www.jianshu.com/p/40501803...

小权的博客 155万+

AutoCAD二次开发(.Net)之XData

对于CAD中的实体进行筛选等操作,常常会用到实体的XData属性,下面介绍一下实体的XData的增删改。 //XData的新增,修改跟新增一样,new一个ResultBuffer,赋值即可 Document doc=Application.DocumentManager.MdiActiveDocument; using (DocumentLock dl = doc.LockDocument()) { using (Transaction trans = doc.TransactionManager.S.

qq_21489689的博客 2592

SWD下载调试接口原理深度剖析

作为ARM嵌入式工程师,下载调试器都应该知道,但你真正了解SWD如何下载调试的么?ARM 芯片通过什么物理接口和什么方式连接完全取决于芯片Debug子系统的架构如何?

zhuwade的博客 1万+

[动态维护图连通性] LOJ#122. 【强制在线】动态图连通性

学一发黑科技 给边设一个权值,对每一种权值 iii 维护权值大于等于 iii 的边构成的最大生成树 TiTiT_i 加边 一个边刚被加入时的权值设为0,如果它连接两个联通块,就把它设为树边,否则设为非树边 删边 假设要删除边 (x,y)(x,y)(x,y),设它的权值为 www 如果它是一条非树边,直接删去,否则要找一条边替代它。 显然替代它的边的边权小于等于 www 设删掉这条边...

CE玩家 1万+

我是如何让爬虫在小红书风控下“偷数据”的?xhs爬虫这些骚操作你可能想不到

最绝的是,他们连评论区都做了动态加载,第一页显示20条评论,再往下滑就变成“加载失败”,实际上得模拟真人反复上滑下滑才能触发完整加载。上个月我们团队帮一家美妆品牌抓竞品爆款笔记,刚开了10个爬虫账号,结果5分钟不到,系统直接弹窗警告“检测到非正常操作”——后来发现,问题出在Wi-Fi上。小红书的风控每周都在升级,上周还能用的方案,这周可能就得重写。但要是想大规模采集,比如监控竞品爆文、分析用户画像,劝你先算笔账:光是一个能抗封的账号矩阵,每月成本就得烧掉几万块,更别说还得养团队随时应对系统升级。

klj3388的博客 1万+

动态图 vs 静态图

动态图 动态图意味着计算图的构建和计算同时发生(define by run)。这种机制由于能够实时得到中间结果的值,使得调试更加容易,同时我们将大脑中的想法转化为代码方案也变得更加容易,对于编程实现来说更友好。Pytorch使用的就是动态图机制,因此它更易上手,风格更加pythonic,大受科研人员的喜爱。 静态图 静态图则意味着计算图的构建和实际计算是分开(define and run)的。在静态图中,会事先了解和定义好整个运算流,这样之后再次运行的时候就不再需要重新构...

hxxjxw的博客 1万+

OpenStack [ compute_id ] 设计上的小缺陷

而 nova 代码中硬编码(或默认配置)将 compute_id 放在 site-packages 目录,属于 设计上的小缺陷—— 把 “库安装目录” 和 “运行时数据目录” 混在一起了,才导致需要临时调整这个目录的权限。# 配置项说明:node_identity_file 是 nova 用于指定节点标识文件路径的官方配置项,优先级高于代码中的默认路径。自定义 compute_id 路径,指向 /var/lib/nova/ 目录下的 compute_id 文件;

求知若渴,虚心若愚。 491

Python 实现生命游戏及进化模拟完整指南

生命模拟是进化计算的一个特定子集,模拟了自然界中所观察到的自然过程,例如粒子或鸟群的聚集方式。生命模拟只是用来探索和优化问题的模拟形式之一,还有很多其他形式的模拟,可以更好地建模各种过程,但它们都源于康威生命游戏 (Conway’s Game of Life)。在本节中,我们将介绍生命模拟的基本概念,并使用 Python 实现康威生命游戏。

盼小辉丶的博客 7万+

韩式多用动态图(甜蜜女孩)

 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=hand; this.alt=点击查看大图; this.title=点击查看大图;}" src="http://p1.images22.51img1.com/6000/xiayu8059/12d1abb29d7e

小小的素材库 9万+

第14.1章 高翔博士2025年11月最新开源框架Lightning-LM源码学习解读(一):激光-IMU定位+建图算法各模块简介

Lightning-LM:高效激光SLAM定位系统 该框架基于模块化设计,通过激光-IMU融合实现快速建图与定位,核心特点包括: 极速性能:纯CPU运行(建图1.2核/定位0.8核) 模块化架构:包含激光里程计(LIO)、地图管理、回环检测等独立模块 动态场景支持:地图分块加载、动静态图层分离 多模式适配:支持ROS2环境下的在线/离线运行 关键模块包括前端里程计(core/lio)、2D/3D地图转换(core/g2p5)、轻量优化库(core/miao)等,通过系统控制器(core/system)协调流

行知SLAM 2437

动态插入视频地址

关键核心语句: document.getElementById(‘video’).load(); 一、用原生的书写 //html <img class="playvideo" src="assets/images/play.png" alt=""> <div class="video-warp" style="display: none;"> <p ...

qq_29954811的博客 18万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

显示动态gif图片

#define TIMER_FIR 1 #define TIMER_SEC 2 //两个窗口,分别显示静态的gif,和动态的gif BOOL CALLBACK GifDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; HBRUSH hBrush, hOldbrus

end_ing的专栏 8731

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

EvolveGraph翻译

抽象 从纯粹的物理系统到复杂的社会动态系统,多主体交互系统在世界上非常普遍。 在许多应用程序中,对环境的有效理解和交互式代理的准确轨迹预测在下游任务(例如决策和计划)中起着重要作用。 在本文中,我们提出了一个通用的轨迹预测框架(名为EvolveGraph),该框架具有通过多个异构交互代理之间的潜在交互图进行显式交互建模的功能。 考虑到不确定性和未来行为的可能性,该模型旨在提供多模式预测假设。 由于即使发生突然的变化,交互也可能随时间变化,并且不同的代理状态演化方式可能导致不同的交互,因此,我们解决了自适应演

weixin_43889128的博客 3130

MT【78】几张动态图

转载于:https://www.cnblogs.com/mathstudy/p/7613593.html

allw1111的博客 4993

CPU缓存一致性动态图

https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESI.htm

bob的博客 4万+

闺蜜

闺蜜多的女孩反而容易单身。因为她们每次都和闺蜜玩,最后形成独立小圈子,旁人很难进入这圈子,所以女朋友越多,男朋友越少。这些女孩每天都很开心,玩的太嗨了,把谈恋爱都给忘了。。是这样吗?亲们!!

u014011318的专栏 8128

2021-06-15 动态图

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="tools.js" type="text/javascript" charset="utf-8"></script> <style type="text/css"> * { margin: 0; p.

a_gust_wind的博客 13万+

用HBuilder插入图片、动态图、音乐、视频、上传文件

第一步将带插入的静态图、动态图、视频放在Hbuilder的img目录下 第二步代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>插入图、视频操作</title> </head> <body> <i...

Austin_的博客 15万+

Matplotlib绘制动态图效果

在实际应用中,我们经常有这样的需求,希望观察到数据的变化过程而不仅仅是最终的结果,例如股票的实时变化、各国家疫情人数动态变化等。此时,传统的静态图无法满足我们的需求,这就需要借助于动态效果图了。在Matplotlib中为我们提供了绘制动态图效果的相关类库,今天我们就一起来学习如何使用Matplotlib绘制动态效果图。首先给出几个案例效果。 在Matplotlib库中有一个子库animation,该库下定义了多种用于绘制动态效果图的类,例如Func...

手把手教你学编程 4682

pytorch——计算图与动态图机制

1、计算图 计算图是用来描述运算的有向无环图; 计算图有两个主要元素:结点(Node)和边(Edge); 结点表示数据,如向量、矩阵、张量,边表示运算,如加减乘除卷积等; 用计算图表示:y=(x+w)∗(w+1)y = (x + w) * (w + 1)y=(x+w)∗(w+1) 令a=x+wa=x+wa=x+w,b=w+1b=w+1b=w+1,y=a∗by=a*by=a∗b,那么得到的计算图如下...

然后就去远行 1万+

探索GitCode上的GIF-H: 一个高效动态图处理工具

是一个由 Ginsweater 开发的轻量级工具,专注于优化和处理动态图像(GIF)。对于需要频繁处理动画效果或在网络应用中使用GIF的开发者来说,它提供了一个简单易用、高性能的解决方案。 ## 技术分析 GIF-H 底层基于 Rust 编程语言,这使得它在处理速度和资源占用上具有显著优势。Rust 的内存安全特性和并发能力确保了 GIF-H 在处理大量数据时的稳定性和效率。项目使用了 [im

gitblog_00072的博客 1309
上一篇: CQOI2014 排序机械臂
下一篇: TJOI2018 数学计算
DancingZ
博客等级 码龄9年 10粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值