bzoj 3674

第47节:cesium 热力图效果(含源码+视频) cesium 热力图效果 阅读详情

在这里插入图片描述
主席树加并查集

#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <math.h>
#include <stack>

#define INF 0x3f3f3f3f
#define IMAX 2147483646
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int

using namespace std;

int n, m, tot = 0, root[200006];
struct T {
	int l, r, f, d;
}t[200006 << 5];

int build(int l, int r) {
	int p = ++tot;
	if (l == r) {
		t[p].f = l;
		t[p].d = 1;
		return p;
	}
	int mid = (l + r) >> 1;
	t[p].l = build(l, mid);
	t[p].r = build(mid + 1, r);
	return p;
}

int ask(int p, int l, int r, int x) {
	while (l < r) {
		int mid = (l + r) >> 1;
		if (x <= mid) {
			r = mid;
			p = t[p].l;
		}
		else {
			l = mid + 1;
			p = t[p].r;
		}
	}
	return p;
}

int add(int pre, int l, int r, int x) {
	int p = ++tot;
	if(l == r){
		t[p].f = x;
		t[p].d = t[pre].d + 1;
		return p;
	}
	t[p].l = t[pre].l;
	t[p].r = t[pre].r;
	int mid = (l + r) >> 1;
	if (x <= mid)t[p].l = add(t[pre].l, l, mid, x);
	else t[p].r = add(t[pre].r, mid + 1, r, x);
	return p;
}

int add(int pre, int l, int r, int s, int f) {
	int p = ++tot;
	if (l == r) {
		t[p].f = f;
		t[p].d = t[pre].d;
		return p;
	}
	t[p].l = t[pre].l;
	t[p].r = t[pre].r;
	int mid = (l + r) >> 1;
	if (s <= mid) t[p].l = add(t[pre].l, l, mid, s, f);
	else t[p].r = add(t[pre].r, mid + 1, r, s, f);
	return p;
}

int get(int p, int x) {
	int k = ask(p, 1, n, x);
	if (t[k].f == x) return k;
	return get(p, t[k].f);
}

int main() {
	cin >> n >> m;
	root[0] = build(1, n);
	int ans = 0, o, x, y;
	for (int i = 1; i <= m; i++) {
		root[i] = root[i - 1];
		scanf("%d", &o);
		if (o == 1) {
			scanf("%d %d", &x, &y);
			int rx = get(root[i], x ^= ans);
			int ry = get(root[i], y ^= ans);
			if (t[rx].f == t[ry].f) continue;
			if (t[rx].d > t[ry].d) swap(rx, ry);
			root[i] = add(root[i - 1], 1, n, t[rx].f, t[ry].f);
			if (t[rx].d == t[ry].d)
				root[i] = add(root[i], 1, n, t[ry].f);
		}
		else if (o == 2) {
			scanf("%d", &x);
			root[i] = root[x ^= ans];
		}
		else {
			scanf("%d %d", &x, &y);
			int rx = get(root[i], x ^= ans);
			int ry = get(root[i], y ^= ans);
			printf("%d\n", ans = rx == ry);
		}
	}
	return 0;
}
/*
5 6
1 1 2
3 1 2
2 1
3 0 3
2 1
3 1 2
*/
uniapp:使用uni.request请求报错errMsg“:“request:fail abort statusCode:-1(uniApp使用uni.request向服务端接口发起请求失败报错) 解决request请求报错request:fail abort statusCode:-1,Uniapp打包到app后报错request:fail abort statusCode:-1,uniapp使用uni.request请求报错{“errMsg“:“request:fail abort statusCode:-1“}的解决办法,不是SSL证书问题,跳过ssl验证,解决https问题,Uniapp报错,小程序报错(含https解决方案)(真机预览问题)uni-app打包后不发请求的原因,uni-app真 阅读详情

相关推荐

腾讯2020 unreal虚幻面试题

解析一下,腾讯的unreal客户端面试题: 1.lua性能优化的方向 申请的内存,是造成卡顿的原因之一,在C++与lua交互中,如果参数或者返回值有类变量,那么这个变量不会再交互的栈中存放数据,而会通过申请内存,再指定在交互,这样就造成卡顿,因此可以通过把C++的对象的每个参数分开单独传递,可以解决问题,当时我们游戏改完这个问题后,整体提升了2帧。 其实,主要是Tick循环中,减少与C++的交互,需要的数据不要每帧都去拿,其次,经常拿的一些数据(比方说主角信息),可以做一个lua缓存,...

qq_17347313的博客 1万+

[BZOJ3673&3674]可持久化并查集&加强版

题目大意:让你实现一个可持久化的并查集(3674强制在线)。 解题思路:刚刚介绍了一个叫rope的神器:我是刘邦,在这两题(实际上两题没什么区别)就派上用场了。 正解应该是主席树||可持久化平衡树,然而rope就是可持久化平衡树呵! 只需将rope当做数组般使用,并查集即可。 BZOJ3673 C++ Code: #include<cstdio> #in...

178

【学习路线】 游戏客户端开发入门到进阶

游戏开发是一个交叉性极强的技术领域,对开发者提出了高维度的要求。作为初学者,不要急于求成,打牢基础、注重原理、勤于实践,你的成长将会非常快速而稳健。希望这份学习路线与书单能为你指明方向,迈出职业开发者的第一步。

hhw_hhw的博客 2128

BZOJ 3673 & 3674 可持久化并查集 - 主席树(可持久化数组)

大概就是维护一个关于fa的可持久化数组,发现中间的节点好浪费啊233,但是好像也没有其他办法了。 注意最好不要写路径压缩,不但麻烦,而且慢。 还有就是BZOJ3674那个记录lt,rt值会MLE,以后还是函数中直接控制范围为妙啊哈哈 BZOJ 3673 #include #include #include #include #include using namespace st

x_1023的博客 341

osgEarth shapefile矢量生成三维模型案例 2.boston.earth

osgEarth shapefile矢量生成三维模型案例 2.boston.earth 波士顿城市建筑、路灯、公园、道路shp矢量生成三维模型案例。

qq_24934183的博客 3543

VirtualBox增强功能安装全指南:从下载到配置复制粘贴功能

本文详细介绍了VirtualBox增强功能的完整安装与配置流程,重点解决了虚拟机与主机间复制粘贴、文件拖放等核心协作难题。通过分步指南和故障排查,帮助用户在不同操作系统(如Windows、Linux)中实现无缝集成,提升虚拟化工作效率与体验。

weixin_29206669的博客 419

BZOJ - 3674 - 可持久化并查集加强版

BZOJ - 3674 考虑用可持久化线段树维护 fafa 和 deepdeep 数组。并且按秩合并。 这样复杂度就是 O(nlog2n)O(nlog^2n) 了。代码里没对 deepdeep 数组持久化。。。不过好像没什么影响。#include<bits/stdc++.h> using namespace std; const int N=2e5+7; int fa[N*25],ls[N*25

On the way 383

别再死记硬背公式了!用ADS手把手教你仿真一个4GHz镜像抑制混频器(附完整工程文件)

本文详细介绍了使用Keysight ADS软件设计和仿真4GHz镜像抑制混频器的完整流程。从理论分析到实际工程实现,涵盖分支线耦合器设计、二极管建模、噪声系数仿真及性能优化等关键步骤,帮助工程师摆脱公式死记硬背,掌握实用的射频电路设计技能。附完整工程文件,可直接应用于实际项目开发。

weixin_28683391的博客 496

BZOJ3673,3694:可持久化并查集(Rope/主席树)

BZOJ3673 BZOJ3674用可持续化数据结构维护祖先。注意的是路径压缩的复杂度是错的,要写按秩合并。写BZOJ3673时: Rope真好用啊!!又是一道1KB题目。写BZOJ3674时: 沃日怎么一直RE?? 要了数据,跑了20s,果然O(nn√logn)O(n\sqrt{n}\log n)的复杂度水不过去。然而没有卡路径压缩,改成路径压缩之后过了。写了主席树0.1s过。。以后还是主

DZYO的博客 559

编写一个期货跨期套利的程序,谈谈思路及案例

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1718

图数据库Neo4j面试内容整理-Neo4j的性能

在执行复杂关系查询时,Neo4j 通过图结构的高效存储和查询机制,能够比传统的关系型数据库提供更快的性能,尤其是在涉及深层关系的查询时。通过合理的配置、优化查询和使用合适的硬件,Neo4j 可以处理大规模的数据集和高并发的查询请求,满足企业级应用的需求。Neo4j 在处理图数据时,通过优化图的存储、查询和遍历等方面,提供了高效的性能,特别适合用于需要处理复杂关系和多层次连接的应用场景,如社交网络、推荐系统、知识图谱等。:Neo4j 会根据查询的结构和数据的分布自动选择最优的查询计划。

不务正业的猿 586

bzoj3674 可持久化并查集加强版

可持久化线段树

AaronPolaris 3459

2025年7月5日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案

2025年7月5日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案

伶俐角少儿编程 898

bzoj3673可持久化并查集 by zky&&bzoj3674可持久化并查集加强版

bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集。 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以使合并均摊复杂度为O(nlog2n)。可持久化线段树实际上就是在更新节点时按主席树的插入方式新建一条路径(其实主席树就是可持久化权值线段树)。 代码: 1 #include...

anheku1562的博客 189

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

BZOJ3674 可持久化并查集加强版 可持久化 并查集

欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3674 题意概括 n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n,m<=2*10^4 题解   上板子 代码 #include...

weixin_30848775的博客 73

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

BZOJ3674:可持久化并查集加强版

浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3674 因为要支持历史操作,所以我们用可持久化线段树来维护并查集的祖先数组。 因为要路径压缩,所以每个点会被建\(k*logn\)次,\(k\)未知,但是绝对不大。 时间复杂度...

aga28832的博客 178

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

BZOJ3674 可持久化并査集

@(BZOJ)[可持久化并査集] Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 请注意本题采用强制在线,所给的a,b,k均经过加密,加密方法为x = x xor lastans,lastans的初始值为0 0<n,m<=2*10...

dk810510的博客 99

[BZOJ3674]可持久化并查集

[BZOJ3674]可持久化并查集 BZOJ强制在线 BZOJ不强制在线 luogu 博主以为自己学会主席树之后来看这题整个人都是木的(学艺不精) 现在终于敢来写一写了 考虑并查集按大小合并 为了实现可持久化 主席树维护sz和fa就行 版本与版本之间的处理需要注意一下 下面放的是强制在线的code #include<bits/stdc++.h> using namespace...

223

bzoj 3674: 可持久化并查集加强版

bzoj 3674: 可持久化并查集加强版 Description: 自从zkysb出了可持久化并查集后…… hzwer:乱写能AC,暴力踩标程 KuribohG:我不路径压缩就过了! ndsf:暴力就可以轻松虐! zky:…… n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一

maxtir的博客 325

BZOJ3673 可持久化并查集(洛谷P3402、BZOJ3674)

BZOJ3673: 可持久化并查集 by zky(洛谷P3402、BZOJ3674) 主席树 并查集 洛谷P3402 BZOJ3673 BZOJ3674 可持久化并查集其实就是并查集+可持久化数组。可持久化数组用主席树实现,把主席树的叶子节点当做数组即可。路径压缩的并查集复杂度是不对的(可以连一条很长的链再回去),因此只能用按秩合并(按最大深度的启发式合并)。 代码: #includ...

forezxl的博客 300

BZOJ 3674 主席树+并查集

/* BZOJ 3674: 可持久化并查集加强版 主席树+并查集 */ #include #include #define m (l+r)/2 using namespace std; const int N = 200100; const int M = N * 60; int n,q,tot; int fa[M],dp[M],T[N*4],lson[M],rson[

legedexinshi的专栏 505

[BZOJ]3674 可持久化并查集

3674: 可持久化并查集加强版Time Limit: 15 Sec Memory Limit: 256 MB Submit: 4051 Solved: 1503 [Submit][Status][Discuss] DescriptionDescription: 自从zkysb出了可持久化并查集后…… hzwer:乱写能AC,暴力踩标程 KuribohG:我不路径压缩就过了! nd

Le Petit Prince 554

bzoj3674 可持久化并查集

我是萌萌的任意门 可持久化并查集的模板题…… 做法好像很多,可以标号法,可以森林法。 本来有O(mloglogn)的神算法(按秩合并+倍增),然而我这种鶸渣就只会写O(mlog2n)的民科算法……再加上人傻常数大如狗,速度简直虚死…… 言归正传,鉴于标号法用的不多,这里用的是森林法。又由于并查集的路径压缩只能均摊logn,如果可持久化一下就废了。所以路径压缩大可不写,正好偷偷懒。...

afghbv0316的博客 122

bzoj 3674(可持久化并查集)

传送门 题解:一道可持久化并查集的裸题,板子子对了就能过; 可持久化并查集是基于主席数的一种结构,可持久化并查集要求能够访问历史版本,跟主席树很像,所以可以通过主席树维护普通并查集的fa数组,但是由于用主席树维护后没有办法用路径压缩,所以需要采用新的合并方式——启发式合并,对每一个节点增加一个level,每次合并从小的指向大的,如果合并的两个节点的level相等,则合并后的节点的level需要...

qq_40584551的博客 250

[BZOJ3673]可持久化并查集

同BZOJ3674.

Zvezda_的博客 431

bzoj3674: 可持久化并查集加强版

题面在这里题意:3种操作 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0做法:可持久化并查集,相当于每个时间建一棵线段树维护每个数的fa[]。 这题我用了按秩合并。这么理解,把并查集看成很多棵树,先不考虑路径压缩。 如果两个节点要合并,相当于把他们所在的两棵树合并。假定两个树的根节点为fx,fy

juruo? juruo! 324
上一篇: poj 1177
下一篇: poj 1952 线性dp
FawkesLi
博客等级 码龄8年 21粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值