[BZOJ]4530 [BJOI2014] 大融合 LCT维护子树信息

Nauuo and ODT(LCT维护连通块) 题面 思路简单 颜色数∗路径数−∑c是一种颜色不包含c的路径数颜色数 * 路径数 - \sum_{c是一种颜色} 不包含c的路径数颜色数∗路径数−∑c是一种颜色​不包含c的路径数 所以我们考虑颜色ccc, 我们把所有不是颜色ccc的点都看作黑色,否则是白色。 所以不包含ccc的路径数是黑色连通块的大小平方和。 考虑我们用LCT维护黑色连通块。 发现当一个点的颜色改变时会有O(出度)O(出度)O(出... 阅读详情

4530: [Bjoi2014]大融合

Time Limit: 10 Sec   Memory Limit: 256 MB
Submit: 525   Solved: 311
[ Submit][ Status][ Discuss]

Description

小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。
这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够
联通的树上路过它的简单路径的数量。
例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因
为有六条简单路径2-3-8,2-3-8-7,3-8,3-8-7,4-3-8,4-3-8-7路过了(3,8)。
现在,你的任务就是随着边的添加,动态的回答小强对于某些边的负载的
询问。

Input

第一行包含两个整数N,Q,表示星球的数量和操作的数量。星球从1开始编号。
接下来的Q行,每行是如下两种格式之一:
A x y 表示在x和y之间连一条边。保证之前x和y是不联通的。
Q x y 表示询问(x,y)这条边上的负载。保证x和y之间有一条边。
1≤N,Q≤100000

Output

对每个查询操作,输出被查询的边的负载。

Sample Input

8 6
A 2 3
A 3 4
A 3 8
A 8 7
A 6 5
Q 3 8

Sample Output

6

HINT

Source

[ Submit][ Status][ Discuss]


HOME Back

题解

我们可以发现这道题需要维护子树信息~ 因为答案就是子树大小乘以联通块其他的size. 因为要加边想到LCT... 考虑如何维护子树信息. 对于每个点x, 维护一个总信息sum, 在splay update的时候更新 . sum等于splay子树的信息+虚子树的信息. 那么将一个点access之后, 那么他的虚子树信息+自己信息就是子树信息. 虚子树信息只在link和access中改变. access加减即可(详见代码), 但link的时候要注意要将x makeroot还要将y makeroot(或者access加splay). 这样就只会是y的虚子树信息改变, 不会影响其他点.

统计答案的时候split改了一下, access y再splay x, 可以自己思考一下为什么.

#include<bits/stdc++.h>
#define ls c[x][0]
#define rs c[x][1]
#define Boc register char
#define Acce register int
using namespace std;
const int maxn = 2e5 + 5;
char ss[2];
bool rev[maxn];
int n, Q, top;
int fa[maxn], c[maxn][2], s[maxn], em[maxn], sum[maxn];
inline const int read()
{
	Acce x = 0;
	Boc ch = getchar();
	while (ch < '0' || ch > '9') ch = getchar();
	while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
	return x;
}
inline bool isroot(int x)
{	return c[fa[x]][0] != x && c[fa[x]][1] != x;}
inline void update(int x)
{	sum[x] = sum[c[x][0]] + sum[c[x][1]] + em[x] + 1;	}
inline void rever(int x)
{	swap(ls, rs), rev[x] ^= 1;	}
inline void pushdown(int x)
{
	if (rev[x])
		rever(ls), rever(rs), rev[x] = 0;
}
inline void rotate(int x)
{
	int y = fa[x], z = fa[y];
	int l = (c[y][1] == x), r = l ^ 1;
	if (!isroot(y)) c[z][c[z][1] == y] = x;
	fa[x] = z, fa[y]= x, fa[c[x][r]] = y;
	c[y][l] = c[x][r], c[x][r] = y;
	update(y), update(x);
}
inline void splay(int x)
{
	top = 0;
	s[++ top] = x;
	for (int i = x; !isroot(i); i = fa[i]) s[++ top] = fa[i];
	for (int i = top; i; -- i) pushdown(s[i]);
	for (int f; !isroot(x); rotate(x))
		if(!isroot(f = fa[x]))
			rotate((c[fa[f]][0] == f ^ c[f][0] == x) ? x : f); 
}
inline void access(int x)
{
	for (int t = 0; x; x = fa[x])
		splay(x), em[x] += sum[c[x][1]]	- sum[t], c[x][1] = t, update(x), t = x;
}
inline void makeroot(int x)
{	access(x), splay(x), rever(x);	}
inline void link(int x, int y)
{
	makeroot(x), makeroot(y);
	fa[x] = y, em[y] += sum[x], update(y);
}
inline void split(int x, int y)
{
	makeroot(x);
	access(y), splay(x); 
}
int main()
{
	int x, y;
	n = read(), Q = read();
	for (Acce i = 1; i <= n; ++ i) sum[i] = 1;
	for (Acce i = 1; i <= Q; ++ i)
	{
		scanf("%s", ss);
		x = read(), y = read();
		if (ss[0] == 'A')	link(x, y);
		else
		{
			split(x, y);
			printf("%lld\n", 1ll * (em[y] + 1) * (sum[x] - em[y] - 1));
		}
	}
} 


手把手教你学Simulink——基于Simulink的轮毂电机独立驱动转矩矢量分配 阐述了轮毂电机独立驱动的核心价值与转矩分配的必要性在 Simulink 中实现了完整的“上层稳定控制 + 下层最优分配”架构对比了三种分配策略在极限工况下的性能差异提供了工程落地的关键考量特斯拉 Cybertruck(后轮双电机矢量控制)Rivian R1T(四电机坦克掉头)宝马 iX(精准牵引力控制)核心思想“以软件定义底盘,以算法驾驭动力;化四轮之独立,为整车之协同。—— 让汽车在极限边缘依然从容不迫。 阅读详情

相关推荐

保姆级教程:用ArcGIS Pro搞定云南30米分辨率DEM地形图(附数据下载与配色方案)

本文提供了一份详细的ArcGIS Pro教程,指导用户如何制作云南30米分辨率DEM地形图。从数据下载、预处理到镶嵌与质量控制,再到地形分析与可视化,全流程覆盖云南复杂地形的处理要点。特别包含数据下载链接、配色方案及常见问题解决方案,适合地理信息分析新手和专业人士。

weixin_30467199的博客 309

CF603E Pastoral Oddities(lct维护虚边信息+set+kruskal)

题目大意:动态加边,定义合法边集为使得每个点度数均为奇数。边集的代价为权值最大的边的权值。每次加入一条边后问现在合法边集的最小代价。我们首先要发现一个结论:当且仅当一个连通图的点数为偶数时,存在合法边集。具体证明见官方题解。于是合法边集的判定标准现在变成了是否不存在奇数个点的连通块。如果给定一张图,我们怎么做呢?类似kruskal的做法,把边按权值从小到大排序,一直加边直到不存在奇数个点的连通块为止

Icefox的博客 651

WSL2离线安装Ubuntu终极指南:绕过Microsoft Store慢速下载(附最新22.04 LTS离线包)

本文提供WSL2离线安装Ubuntu 22.04 LTS的完整指南,帮助开发者绕过Microsoft Store下载慢的问题。通过PowerShell命令配置环境、获取离线安装包并完成安装,同时包含初始配置、资源优化及常见问题解决方案,助您快速搭建高效的Linux开发环境。

c8d9e0f1的博客 899

BZOJ4530 BJOI 2014 大融合 LCT维护子树信息

BZOJ4530 大融合Description 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它的简单路径的数量。 例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因 为有六条简单路径2-3-8,2-3-8-7,3-8,3-

rgnoH的博客 523

Cadence Allegro 17.4学习记录开始00

Cadence Allegro 有三个版本,16.6,17.2,17.4。现在主要学习最新的版本17.4.原理图设计:OrCADPCB设计:Allegro主要用到的就下面三个图片软件:PCB Editor 17.4 是用来画PCB和元器件封装的;Padstack Editor 17.4 是用来画元器件焊盘的;Capture CIS 17.4 是用来画原理图和原理图库的。其实Cadence还有很多功能,现在计划先学习以上内容,后面熟悉了这个软件,还可以继续学习放仿真等功能。

qq_31444421的博客 7446

AnyLogic 8.8.3 最新版安装指南:从下载到配置的完整流程(附Java环境设置技巧)

本文提供了AnyLogic 8.8.3最新版从下载到配置的完整安装指南,重点解决了跨平台(Windows、macOS、Linux)部署中的常见问题。核心内容详细讲解了Java开发环境(JDK)的精准配置技巧,包括版本选择、系统环境变量设置与验证,确保为仿真建模工作奠定稳固基础。

efc1234567的博客 762

[BZOJ3510][启发式合并][LCT维护子树信息]首都

题意略…(今天比较懒)由于只有建造公路没有破环公路,所以可以用启发式合并保持操作数为log,暴力拆开小的联通块,用LCT插到大的联通块内,然后用LCT维护子树信息,具体看这里#include <cstdio> #include <iostream> #include <algorithm> #define N 300010using namespace std;int n,m,rt[N],g[N],

CE玩家 1095

用python将dycom .dcm格式图像转换为nifti .nii

因为发现目前搜索到的多数中文教程并不能正确将FMRI图像正确转换,例如很多用simpleITk的seriesreader的,所以写了一下自己正确转换的方法。因为FMRI是一个4D数据,有时间轴,所以用seriesreader读写出来的图像把时间轴维度给降维了。当然你用SPM12工具的dycom import也是能正确转换的,但是我还是喜欢python这样的,代码直接简单。

qq_41103479的博客 3609

bzoj4530 [Bjoi2014]大融合(lct维护虚边信息)

把(x,y)这条边当根,答案显然就是sz[x]*sz[y]。我们需要动态维护子树大小这个信息。lct显然可以胜任。不同的是,我们还需要维护虚边的信息。怎么办呢?我们发现,虚边信息只会在link和access时有改变。于是我们记sz[x]为x的子树总信息,isz[x]为x的虚边链接的子树信息。link时注意要把x和y都边成根(这样只需要维护y的虚边信息即可)。access时把虚边信息改对。

Icefox的博客 616

保姆级教程:用AI辅助反编译Python3.9+的EXE文件(兼容新版pycdc工具)

本文详细介绍了如何利用AI技术辅助反编译Python 3.9+的EXE文件,解决传统工具如uncompyle6无法处理新版字节码的问题。通过pycdc工具和AI大模型的结合,开发者可以高效还原代码逻辑,并提供了从EXE解包到字节码解析的完整流程,适用于逆向工程和代码分析场景。

hill8的博客 1224

在 SAP S/4HANA 里把 OData Client Proxy 用顺手,借助 Service Consumption Model 2.0 提前打通远程 OData 调用

摘要:本文探讨了在SAP S/4HANA集成开发中调用外部OData服务的解决方案。传统ABAP代码直接调用方式存在诸多不便,而OData Client Proxy提供了更稳定的途径。文章详细介绍了如何通过Service Consumption Model 2.0在SAP BTP生成模型类,并将其移植到SAP S/4HANA进行适配改造,最终注册为可用的OData Proxy Client。该方法适用于较新版本的SAP S/4HANA系统,通过源码替换实现模型转换,为系统集成提供了高效的类型安全调用方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1092

【BZOJ4530】[Bjoi2014]大融合 LCT维护子树信息

【BZOJ4530】[Bjoi2014]大融合 Description 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量。 例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因为有六条简单路径2-3-8,2-3-...

aodanchui1057的博客 144

韩版传奇 2 源码分析与 Unity 重制(一)服务端 TCP 状态管理

该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。本文重点介绍了服务端的启动链路、网络初始化和连接处理这三个过程,并简要分析的游戏循环的实现与数据包处理,在下一篇文章中,我们会从客户端角度分析从游戏启动、登录、游戏开始和基础游戏交互的全流程。

东方猫的博客 2497

BZOJ 4530 [Bjoi2014]大融合 LCT维护子树信息

题目大意:给出n个点,定义一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量,要求支持两个操作:加边,询问边的负载。保证加边不会出现环。暴力用LCT维护子树信息。LCT维护子树信息(子树信息LCT) LCT维护边权(边权LCT) 知识点讲解#include <cstdio> #include <algorithm> #define N 100005 using namespace st

YihAN_Z 1063

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

bzoj4530 [Bjoi2014]大融合 LCT维护子树信息

Description 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量。 对于40%的数据,N,Q≤1000 对于100%的数据,1≤N,Q≤100000 Solution 所求答案就是给定边两端子树size的乘积,由于我不cai会de在k...

olahiuj的博客 274

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

[BZOJ4530][BJOI2014]大融合(LCT维护子树信息)

题目: 我是超链接 题解: 上次我是运用的树链剖分+并查集做的,但事实上看到连接边应该想到LCT,这个负载很明显是两个子树的节点数相乘,那么我们只要在LCT的同时维护一波信息就好了 维护什么信息?我们要维护的是虚子树的节点数量!有一个操作叫做split,意思是把除x,y这条边之外和x,y相连的splay边断掉。实现起来很简单,reverse+access+splay就好了。这样做完之后,我...

薇小薇 329

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

bzoj 4530: [Bjoi2014]大融合 lct维护子树信息

题意给你n个点,要求资瓷以下操作: A x y连接x和y。 Q x y询问x所在的树上有多少条简单路径经过x到y这条边。 n,m<=100000分析lct维护子树信息 这题显然是要动态维护每个点的size。 考虑如何用lct维护子树大小。 定义siz[x]表示x的所有虚儿子的子树大小和,size[x]表示x的所有虚儿子+实儿子+自己的子树大小和。那么只要在虚实边变化的时候维护一下siz的

beginend 1174

bzoj4530 [Bjoi2014]大融合 (LCT维护子树信息)

bzoj4530 [Bjoi2014]大融合原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=4530题意: 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它的简单路径的数量。 例如,在上图中,现在一共有了

Bfk的博客 478

BZOJ 4530: [Bjoi2014]大融合 lct维护子树信息

4530: [Bjoi2014]大融合 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 561  Solved: 327 [Submit][Status][Discuss] Description 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负

BlackJack 422

BZOJ4530[Bjoi2014]大融合——LCT维护子树信息

题目描述 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它的简单路径的数量。 例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因 为有六条简单路径2-3-8,2-3-8-7,3-8,3-8-7,4-3-8,4-3-8-7路过了(3,...

weixin_34387284的博客 127

[BZOJ4530][Bjoi2014][LCT维护子树信息]大融合

LCT练习题第一次用指针打LCT,有蛮多意外的,不过确实感觉指针比数组打起来爽多了#include <cstdio> #include <iostream> #include <algorithm> #define N 100010using namespace std;int n,m,x,y,tp,f[N],tot[N],G[N]; char op;struct lef{ lef *fa,*c

CE玩家 687

Termexo v0.9.0:终端原生工作台与Antigravity增强原理

终端工作台是现代开发者在CLI环境中提升效率的核心基础设施,其本质是将Git、文件系统、进程管理等语义能力深度集成到终端渲染层。Termexo v0.9.0通过Rust实现的原生终端增强架构,突破GUI叠加工具的局限,以Antigravity理念实现无感上下文感知——自动监听inotify事件、解析systemd日志、结构化diff导航。它不依赖Python或Node运行时,采用静态链接单二进制交付,保障跨平台确定性;其Diff导航模块支持行号映射、AST语义跳转与测试联动,将传统文本扫描升级为可交互的语义

weixin_33884611的博客 317

【bzoj4530】[Bjoi2014]大融合 LCT维护子树信息

题目描述 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量。 例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因为有六条简单路径2-3-8,2-3-8-7,3-8,3-8-7,4-3-8,4-3-8-7路过了(3,8...

weixin_30590285的博客 103

中断上半部响应时间优化实战:从裸机到RTOS的完整指南

中断响应时间是衡量嵌入式系统实时性的核心指标,尤其在运动控制、通信协议栈等场景中,中断上半部的响应快慢直接决定系统稳定性。该时间由硬件触发、CPU压栈、软件入口及ISR执行等多段延迟组成,其中裸机环境下的关中断临界区、RTOS的任务调度开销以及ISR函数实现质量,往往是优化的关键突破口。围绕Cortex-M与FreeRTOS,讲解GPIO翻转测量法、DMA+空闲中断、NVIC优先级分组设计以及Linux下irqsoff追踪等实用技术,并给出典型问题排查表,帮助开发者在MCU底层驱动、实时控制等项目中系统性提

weixin_33968104的博客 383

bzoj 4530 [Bjoi2014]大融合——LCT维护子树信息

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 LCT维护子树 siz 。设 sm[ ] 表示轻儿子的 siz 和+1(1是自己的siz),siz[ ] 表示 splay 里 ( 两个儿子的 siz[ ] ) + sm[ cr ] 。在 access 里随便维护一下就好了。 一开始写的 siz[ ] 是 splay 里右儿子的...

weixin_30869099的博客 79

【LCT维护子树信息】BZOJ4530(Bjoi2014)[大融合]题解

题目概述 有 nn 个点, mm 个操作。操作有两种:1.连接 xx 和 yy 。2.询问经过 (x,y)(x,y) 的路径数。 解题报告 答案显然就是 si(x)×si(y)si(x)\times si(y) ,但是有连接操作,可以考虑LCT(好像有很多离线做法,我不是很清楚QAQ)。问题就是如何维护子树信息。 LCT实链上的信息可以方便维护,所以我们关注虚边:虚边只在Access和

ZigZagK的博客 577
上一篇: [BZOJ]3159 决战 LCT&Splay
下一篇: 扩展欧拉定理证明
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值