洛谷P2486染色

线段树的入门与优化 NOI 信息竞赛内容,数据结构,线段树专题 阅读详情

题目大意

给定一棵有n个节点的无根树和m个操作,操作有2类:

1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。

请你写一个程序依次完成这m个操作。

程序如下

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#define MAX (150000+5)
using namespace std;
struct node
{
    int down;
    int sum;
    int l,r;
}Segt[MAX*4];
struct node1
{
    int to;
    int next;
}edge[MAX*2];
int Father[MAX],Depth[MAX];
int Sum[MAX],Son[MAX],Top[MAX];
int TREE[MAX],T_NUM[MAX];
int num_edge,head[MAX],n,cnt;
int a[MAX];

inline int get()
{
    char c;
    int x=0,f=1;
    c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
    return x*f;
}

void add(int u,int v)
{
    edge[++num_edge].to=v;
    edge[num_edge].next=head[u];
    head[u]=num_edge;
}

void Build(int node,int l,int r)
{
    if (l==r)
    {
        Segt[node].sum=1;
        Segt[node].l=Segt[node].r=TREE[l];
    }
    else
    {
        int mid=(l+r)/2;
        Build(node*2,l,mid);
        Build(node*2+1,mid+1,r);
        Segt[node].l=Segt[node*2].l;
        Segt[node].r=Segt[node*2+1].r;
        Segt[node].sum=Segt[node*2].sum+Segt[node*2+1].sum-(Segt[node*2].r==Segt[node*2+1].l);
    }
}

void Pushdown(int node)
{
    if (Segt[node].down!=0)
    {
        Segt[node*2].sum=1;
        Segt[node*2+1].sum=1;
        
        Segt[node*2].down=Segt[node].down;
        Segt[node*2+1].down=Segt[node].down;
        
        Segt[node*2].l=Segt[node*2].r=Segt[node].down;
        Segt[node*2+1].l=Segt[node*2+1].r=Segt[node].down;
        
        Segt[node].down=0;
    }
}

int Query(int node,int l,int r,int l1,int r1)
{
    if (r<l1 || l>r1)
        return 0;
    if (l1<=l && r<=r1)
        return Segt[node].sum;
    Pushdown(node);
    int mid=(l+r)/2;
    int x=Query(node*2,l,mid,l1,r1);
    int y=Query(node*2+1,mid+1,r,l1,r1);
    if (x!=0 && y!=0)
        return x+y-(Segt[node*2].r==Segt[node*2+1].l);
    return max(x,y);
}

void Update(int node,int l,int r,int l1,int r1,int k) 
{
    if (r<l1 || l>r1)
        return;
    if (l1<=l && r<=r1)
    {
        Segt[node].down=k;
        Segt[node].sum=1;
        Segt[node].l=Segt[node].r=k;
        return;
    }
    Pushdown(node);
    int mid=(l+r)/2;
    Update(node*2,l,mid,l1,r1,k);
    Update(node*2+1,mid+1,r,l1,r1,k);
    Segt[node].l=Segt[node*2].l;
    Segt[node].r=Segt[node*2+1].r;
    Segt[node].sum=Segt[node*2].sum+Segt[node*2+1].sum-(Segt[node*2].r==Segt[node*2+1].l);
}

int Ask(int node,int l,int r,int x)
{
	if (l==r)
		return Segt[node].l;
	else
	{
		Pushdown(node);
		int mid=(l+r)/2;
		if (x<=mid)	return Ask(node*2,l,mid,x);
		else return Ask(node*2+1,mid+1,r,x);
	}
}

int Get(int x,int y)
{
    int fx=Top[x],fy=Top[y];
    int Ans=0;
    while (fx!=fy)
    {
        if (Depth[fx]<Depth[fy])
            swap(fx,fy),swap(x,y);
        int re=Ask(1,1,n,T_NUM[fx]);
        int fun=Ask(1,1,n,T_NUM[Father[fx]]);
        Ans+=Query(1,1,n,T_NUM[fx],T_NUM[x])-(re==fun);
        x=Father[fx],fx=Top[x];
    }
    if (Depth[x]<Depth[y])
        swap(x,y);
    return Ans+=Query(1,1,n,T_NUM[y],T_NUM[x]);
}

void Change(int x,int y,int k)
{
    int fx=Top[x],fy=Top[y];
    while (fx!=fy)
    {
        if (Depth[fx]<Depth[fy])
            swap(fx,fy),swap(x,y);
        Update(1,1,n,T_NUM[fx],T_NUM[x],k);
        x=Father[fx],fx=Top[x];
    }
    if (Depth[x]<Depth[y])
        swap(x,y);
    Update(1,1,n,T_NUM[y],T_NUM[x],k);
}

void Dfs1(int x)
{
    Depth[x]=Depth[Father[x]]+1;
    Sum[x]=1;
    for (int i=head[x];i!=0;i=edge[i].next)
        if (edge[i].to!=Father[x])
        {
            Father[edge[i].to]=x;
            Dfs1(edge[i].to);
            Sum[x]+=Sum[edge[i].to];
            if (Son[x]==0 || Sum[Son[x]]<Sum[edge[i].to])
                Son[x]=edge[i].to;
        }
}

void Dfs2(int x,int pre)
{
    TREE[++cnt]=a[x];
    T_NUM[x]=cnt;
    Top[x]=pre;
    if (Son[x]!=0)
        Dfs2(Son[x],pre);
    for (int i=head[x];i!=0;i=edge[i].next)
        if (edge[i].to!=Son[x] && edge[i].to!=Father[x])
            Dfs2(edge[i].to,edge[i].to);
}

int main()
{
    char ch;
    int x,y,k,m,u,v;
    n=get();
    m=get();
    for (int i=1;i<=n;++i)
        a[i]=get();
    for (int i=1;i<=n-1;++i)
    {
        u=get();
        v=get();
        add(u,v);
        add(v,u);
    }
    Dfs1(1);
    Father[1]=1;
    Dfs2(1,1);
    Build(1,1,n);
    for (int i=1;i<=m;++i)
    {
        ch=getchar();
        while (ch!='C'&&ch!='Q') ch=getchar();
        if (ch=='Q')
            x=get(),y=get(),printf("%d\n",Get(x,y));
        else
            x=get(),y=get(),k=get(),Change(x,y,k);
    }
    return 0;
}

KeePassHTTP插件配置指南:实现浏览器自动填充密码 密码管理是网络安全和个人信息保护的基础环节,其核心原理在于通过加密算法对敏感凭证进行安全存储与调用。在众多技术方案中,本地密码管理器因其数据自主可控而备受青睐,它通过主密钥加密本地数据库文件,从根源上避免了云端泄露风险。KeePass作为一款开源免费的本地密码管理器,通过插件生态扩展其技术价值,其中KeePassHTTP插件扮演了关键角色,它在本地启动一个微型HTTP服务器,与浏览器扩展建立加密通信,实现了在保持端到端加密优势下的**自动填充**功能。这一机制极大地提升了日常登录场景的效率,用户访问网站时, 阅读详情

相关推荐

【线段树】线段树优化建图(CF786B题解)

在开始之前,你应该了解如下知识: 完全二叉树的性质 线段树的原理及使用 图的存储方式及图论基础 我们首先看一道题:洛谷链接/CodeForces链接/Vjudge链接 上面这道题,我们首先考虑暴力建边,无论前面的建图部分还是后面的最短路,显然都是会超时的,然后我们观察题目,题目中提到每次对一整个[i, j]区间执行同一操作,所以我们考虑使用一些数据结构进行优化。 线段树优化建图 我们考虑,如果建立一个线段树,再用线段树上的节点代表区间,既然同一个操作对于区间...

Duawieh的博客 1485

洛谷p1330

题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。 阳光大学的校园是一张由n个点构成的无向图,n个点之间由m条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。 询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。 输入格式 第一行两个正...

zjsru_Beginner的博客 744

关系代数表达式优化步骤

关系代数表达式优化步骤 本篇主要讲解怎么画查询语法树并对其优化,因为我在学关系代数的语法树的时候,在网上找不到比较详细的教法或者技巧,最后通过答案反推原理,所以想写一篇技巧来描述一下这类题的解题方法。 先上书内讲解 1、构造查询树 第一步:把用高级语言定义的查询转换为关系代数表达式 ★ 以 SELECT子向对应投影操作,以FROM字向对应笛卡尔积以 WHERE子句对应选择操作,生成原始查询树 ★ SQL语句转化为原始查询树 第二步:把关系代数表达式转换为查询树。 注: 查询树是一种表示关系代数表达式的树形结

m0_51718449的博客 7016

线段树算法(C++/C)

本文主要介绍的是算法中的线段树算法,简单易懂详细

gaoqiandr的博客 2573

Cesium体渲染实战:从医学CT到气象数据的3D可视化全攻略

本文详细介绍了如何利用Cesium体渲染技术实现医学CT和气象数据的3D可视化。从数据预处理到交互式渲染,涵盖了DICOM和NetCDF格式的处理技巧,以及性能优化的实战策略,帮助开发者高效处理复杂的三维数据集。

weixin_28717431的博客 420

流量特征工程实战:基于Python脚本的CIC-FlowMeter批量自动化处理

本文详细介绍了如何利用Python脚本对CIC-FlowMeter工具进行批量自动化封装,实现从海量PCAP文件中高效提取流量特征并生成CSV文件。通过构建健壮的自动化流水线,解决了手动处理效率低下、易出错的问题,并分享了并行处理、错误处理等关键优化技巧,助力网络流量分析与机器学习数据预处理工作。

c6d7e8f9g的博客 744

洛谷 P2486 [SDOI2011]染色 树链剖分

洛谷 P2486 [SDOI2011]染色 题意 有一棵 nnn 个结点的无根树,每个结点有一个颜色,有 mmm 个操作,操作分两种: 将结点 aaa 到结点 bbb 路径上的所有结点颜色都染成 ccc 。 询问结点 aaa 到结点 bbb 路径上颜色段的数量。 颜色段的定义是极长的连续相同颜色被认为是一段。例如 112221 由三段组成:11、222、1。 解法 树链剖分 树上路径操作的修改与询问,考虑使用树链剖分。 维护区间内颜色段的数量,考虑使用线段树,维护区间内颜色段的数量和两端的颜色。区间

bandiaoz的博客 189

MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

rachel_2016的博客 1490

洛谷P2486 [SDOI2011]染色 树剖+线段树+区间染色

洛谷P2486 [SDOI2011]染色 标签 树剖 线段树 区间染色 简明题意 给一棵树,每个节点都拥有自己的颜色,需要你支持两种操作 修改:将u–v路径上的所有节点的颜色改为c 查询:查询u–v路径上有多少个颜色段 思路 树剖,剖完线段树维护颜色。修改change创造做很简单,改就完了,查询的操作稍微复杂点,就是比如树上的路径时这样的:1-2-3-4-10-11,查1–...

danzh 249

CANOCO5.0实现冗余分析(RDA)最详细步骤

在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。1.不同样点和环境因子之间夹角是锐角 是正相关,是钝角是负相关。2.夹角越大 说明相关性较小,夹角越小,相关性越大。得有不同的物种或者样点数值,再加上环境因子数据。3.箭头越长 相关性越大。时间调整到2010年。

Along6的博客 1万+

31、自然语言生成中的流畅度评估

本博客探讨了自然语言生成(NLG)中流畅度评估的重要性和方法。文章详细介绍了流畅度的定义及其影响因素,包括句法结构、词汇选择、语义一致性和段落组织。同时,讨论了自动评估和人工评估两种主要方法,并以机器翻译、自动摘要和对话系统为例分析了流畅度评估的应用场景。最后,文章提出了提升流畅度的技术策略以及未来研究方向,为相关领域的研究者和开发者提供了有价值的参考。

h9j8k7l6m5n的博客 275

洛谷 P2486 [SDOI2011]染色(线段树区间更新,树链剖分)

链接: 洛谷 P2486 [SDOI2011]染色 题目描述 输入格式 输出格式 对于每个询问操作,输出一行答案。 输入输出样例 输入 #1 6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q 3 5 C 5 1 2 Q 3 5 输出 #1 3 1 2 分析: 树上区间操作,首先进行树链剖分。 对于每一条链,线段树进行区间维护,对...

Plus Ultra! 338

《信息化项目文档模板十二——业务需求新增/变更审批确认表 》

系列文章目录 《信息化项目文档模板一——项目需求说明书》 《信息化项目文档模板二——项目启动会文档模板》 《信息化项目文档模板三——会议纪要模板》 《信息化项目文档模板四——系统项目蓝图设计模板》 《信息化项目文档模板五——系统详细设计模板》 《信息化项目文档模板六——系统详细设计模板》 《信息化项目文档模板七——系统开发计划模板》 《信息化项目文档模板八——系统功能测试模板》 《信息化项目文档模板九——系统压力测试模板》 《信息化项目文档模板十——系统推广上线计划模板》 《信息化项目文档模板十一——系统用

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1712

洛谷P2486 [SDOI2011] 染色 题解

本文提出了一种基于重链剖分和线段树的算法,用于解决树上路径操作问题。算法主要处理两种操作:1)路径覆盖,将指定路径上的节点值统一修改;2)路径查询,统计路径上连续相同数字段的数量。通过将树转化为重链结构,利用线段树维护区间信息,并设计特殊的合并策略处理重链间的连接。查询时采用分链处理并交换左右端点实现正确合并。实验证明该方法能高效解决大规模树形结构上的路径操作问题。

Little_Zyl的博客 975

CodeX 登录报错 os error 10013?一键修复 CodeX 无法登录问题(亲测有效)

CodeX 登录时报 os error 10013?本文提供快速修复方案,实测有效,彻底解决登录报错:登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013)的问题💡

XiaoqiangClub的博客 2933

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【笔记】树链剖分三题(洛谷 P3384 树剖模板 & P2146 软件包管理器 & P2486 染色)

You tell me I'm wrong. Then you'd better prove you're right.

Isaac Regulus的博客 1075

深度学习工具包 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")

洛谷 P2486 [SDOI2011]染色

P2486 [SDOI2011]染色 题目描述 输入输出格式 输入格式: 输出格式: 对于每个询问操作,输出一行答案。 输入输出样例 输入样例#1:复制 6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q 3 5 C 5 1...

HJ921004的博客 213

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

洛谷 [P2486] 染色

树剖+线段树维护连续相同区间个数 注意什么时候长度要减一 #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> #define lson l,mid,rt<<1 #define rs...

161

洛谷-P2486 [SDOI2011]染色(树链剖分)

题目链接:https://www.luogu.org/problemnew/show/P2486 题目大意:中文题,如题。 思路:很明显的树剖,维护一条链的颜色个数,最左右节点的颜色。合并的时候注意要比较一下相连接的部分,如果颜色一样,就ans--。 比较连接处颜色的时候手残少些了个Top。结果一直WA。找了个过的对拍了一下。发现是手残。佛了。后面有对拍代码。觉得自己没问题的可以拍一下看看,...

永远鲜红の幼月的博客 289

[洛谷P2486] [SDOI2011]染色

题目链接: 传送门 题目分析: 树链剖分经典题 首先考虑在序列上如何维护染色与色段个数,可以很容易想到每次pushup时将左子和右子的个数合并上来,并判断一下中间是否是同一段 在树上同理,对每个重链建线段树并如上所述维护,注意在查找答案时跳每段重链要记录端点颜色来比较,判一下两端端点颜色是否相同 也可用LCT做,还没学,学完回来补档。 写树剖细节很多,尽量考虑全面。 代码: //记录线段树区间左端...

weixin_30537451的博客 119

【洛谷P2486】【BZOJ2243】染色【树链剖分】

题目大意: 题目链接: BZOJ:https://www.lydsy.com/JudgeOnline/problem.php?id=2243 洛谷:https://www.luogu.org/problem/P2486 给出一棵树,维护下列操作: C a b cC\ a\ b\ cC a b c:把结点aaa到结点bbb路径上的全部结点...

stoorz 270

洛谷P2486 [SDOI2011]染色

题目描述 输入输出格式 输入格式: 输出格式: 对于每个询问操作,输出一行答案。 输入输出样例 输入样例#1:  6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q 3 5 C 5 1 2 Q 3 5 输出样例#1:  3 1 2 说明

蒟蒻的博客 400
上一篇: 洛谷P2764 最小路径覆盖问题
下一篇: 主席树
Slr2002
博客等级 码龄9年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值