bzoj P3531 [Sdoi2014]旅行

从0到1搭建StarRocks3.4.1存算一体架构(VM 虚拟机版) 本文详细介绍了如何在VM虚拟机上从零搭建StarRocks 3.4.1存算一体架构。首先阐述了StarRocks作为高性能分布式SQL数据仓库的优势,重点讲解了其存算一体架构的设计原理。随后提供完整的安装指南,包括环境准备(3台CentOS 8虚拟机配置)、网络互通验证、Java环境配置、软件包解压安装等关键步骤。文章特别详细说明了FE和BE节点的配置文件修改(fe.conf和be.conf)以及必要的防火墙端口开放配置。通过图文并茂的方式,帮助开发者和运维人员快速掌握StarRocks集群部署方法,为后续 阅读详情

传送门

这道题学到了动态开空间线段树的写法,感觉跟主席树有一定的类似。

说一下怎么动态开吧。

首先回忆一下线段树的过程,我们发现对于这题,每一颗线段树都有很多的子结点是0,也就是说这些节点都是没用的,所以我们考虑对于每一个非0叶子结点到根都是非0的,但是其他都是为0的,都是没有用的,那么为何要为它们开内存存储呢,所以我们换种方式存储对每一个节点都有一个编号,然后结构体内的l,r都是存的l,r的编号,对于没用的节点都不开内存给它。

再说下这题的题解,开c个线段树来维护c个宗教,所以每一宗教就直接树链剖分,然后动态开内存空间要开大点。

代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int Maxn=1000005;
struct node{int v,next;}Qt[Maxn*2];
struct segment{int l,r,mx,sum;}t[Maxn*4];
int n,m,cnt,tmp,SIZE;
int w[Maxn],c[Maxn],head[Maxn],size[Maxn],fa[Maxn],depth[Maxn],pos[Maxn],top[Maxn],root[Maxn];
inline void swap(int &a,int &b){int t=a;a=b;b=t;}
inline int max(int a,int b){return a>b?a:b;}
inline void Insert(int u,int v)
{
	cnt++;
	Qt[cnt].v=v;
	Qt[cnt].next=head[u];
	head[u]=cnt;
}
void dfs1(int x)
{
	size[x]=1;
	for(int i=head[x];i;i=Qt[i].next)
	{
		if(Qt[i].v==fa[x])continue;
		depth[Qt[i].v]=depth[x]+1;
		fa[Qt[i].v]=x;
		dfs1(Qt[i].v);
		size[x]+=size[Qt[i].v];
	}
}
void dfs2(int x,int tp)
{
	int k=0;
	pos[x]=++tmp;
	top[x]=tp;
	for(int i=head[x];i;i=Qt[i].next)
		if(depth[Qt[i].v]>depth[x]&&size[Qt[i].v]>size[k])
			k=Qt[i].v;
	if(k)
		dfs2(k,tp);
	for(int i=head[x];i;i=Qt[i].next)
		if(depth[Qt[i].v]>depth[x]&&Qt[i].v!=k)
			dfs2(Qt[i].v,Qt[i].v);
}
inline void change(int &k,int l,int r,int x,int d)
{
	if(!k)k=++SIZE;
	if(l==r){t[k].mx=t[k].sum=d;return ;}
	int mid=(l+r)>>1;
	if(x<=mid)change(t[k].l,l,mid,x,d);
	else change(t[k].r,mid+1,r,x,d);
	t[k].mx=max(t[t[k].l].mx,t[t[k].r].mx);
	t[k].sum=t[t[k].l].sum+t[t[k].r].sum;
}
inline int Qmax(int k,int l,int r,int lf,int rf)
{
	if(l>=lf&&r<=rf)return t[k].mx;
	int mid=(l+r)>>1,mx=0;
	if(mid>=lf)mx=max(mx,Qmax(t[k].l,l,mid,lf,rf));
	if(mid<rf)mx=max(mx,Qmax(t[k].r,mid+1,r,lf,rf));
	return mx;
}
inline int Qsum(int k,int l,int r,int lf,int rf)
{
	if(l>=lf&&r<=rf)return t[k].sum;
	int mid=(l+r)>>1,sum=0;
	if(mid>=lf)sum+=Qsum(t[k].l,l,mid,lf,rf);
	if(mid<rf)sum+=Qsum(t[k].r,mid+1,r,lf,rf);
	return sum;
}
inline int solvesum(int _c,int x,int y)
{
	int sum=0;
	while(top[x]!=top[y])
	{
		if(depth[top[x]]<depth[top[y]])swap(x,y);
		sum+=Qsum(root[_c],1,n,pos[top[x]],pos[x]);
		x=fa[top[x]];
	}
	if(pos[x]>pos[y])swap(x,y);
	sum+=Qsum(root[_c],1,n,pos[x],pos[y]);
    return sum;
}
inline int solvemax(int _c,int x,int y)
{
	int mx=0;
	while(top[x]!=top[y])
	{
		if(depth[top[x]]<depth[top[y]])swap(x,y);
		mx=max(mx,Qmax(root[_c],1,n,pos[top[x]],pos[x]));
		x=fa[top[x]];
	}
	if(pos[x]>pos[y])swap(x,y);
	mx=max(mx,Qmax(root[_c],1,n,pos[x],pos[y]));
    return mx;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		scanf("%d%d",&w[i],&c[i]);
	for(int i=1;i<=n-1;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		Insert(x,y);
		Insert(y,x);
	}
	dfs1(1);
	dfs2(1,1);
	for(int i=1;i<=n;i++)
		change(root[c[i]],1,n,pos[i],w[i]);
	scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        char ch[5];
		int x,y;
        scanf("%s",ch);
        scanf("%d%d",&x,&y);
        if(ch[1]=='C')
        	change(root[c[x]],1,n,pos[x],0),c[x]=y,change(root[c[x]],1,n,pos[x],w[x]);
        else if(ch[1]=='W')
			change(root[c[x]],1,n,pos[x],y),w[x]=y;
        else if(ch[1]=='S')
    		printf("%d\n",solvesum(c[x],x,y));
        else if(ch[1]=='M')
        	printf("%d\n",solvemax(c[x],x,y));
    }
	return 0;
}


自动识别象棋棋子的OpenCV应用 在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。 阅读详情

相关推荐

手把手教你用Boot-Repair快速修复Ubuntu启动分区缺失(附详细命令行步骤)

本文详细介绍了如何使用Boot-Repair工具快速修复Ubuntu启动分区缺失问题,包括诊断、应急准备、自动修复和手动命令操作。通过grub rescue模式下的关键命令和Boot-Repair的图形界面操作,帮助用户高效解决启动分区故障,确保系统恢复正常运行。

weixin_29229989的博客 563

Bzoj3531:[Sdoi2014]旅行:树链剖分+动态开点线段树

题目链接:[Sdoi2014]旅行 对于每种颜色维护一颗线段树,为了节约空间这里我们动态开点 然后就是弱鸡的线段树操作了 指针的动态开点线段树现在才会写…… #include #include #include #include using namespace std; const int maxn=100010; const int maxc=100001; int n,m,tot=0,

蜜の夜明け 585

多模态变体—ALIGN:高效的图像-文本学习

ALIGN 论文介绍了该模型的关键技术。无人工标注数据:使用互联网数据进行训练,不依赖人工清洗的数据集。高效的对比学习策略:采用大规模图像-文本配对数据,通过对比学习优化嵌入空间。支持零样本(zero-shot)学习:可以在没有专门训练的情况下执行多种任务,如分类、检索等。可扩展性强:ALIGN 采用高效的 CNN 或 Transformer 作为编码器,适用于大规模计算。

Azperk的博客 1218

BZOJ3531: [Sdoi2014]旅行

Description  S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。为了方便,我们用不同的正整数代表各种宗教,  S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。S国政府为每

cx_lzx蒟蒻的博客 1362

一文读懂YOLO V5 与 YOLO V4

一文读懂YOLO V5 与 YOLO V4 YOLO之父Joseph Redmon在今年年初宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。然而在4月23日,继任者YOLO V4却悄无声息地来了。Alexey Bochkovskiy发表了一篇名为YOLOV4: Optimal Speed and Accuracy of Object Detection的文章。YOLO V4是YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10%

williamhyin的博客 8795

fpga在线升级 linux_仅5000行Verilog代码、可在FPGA上跑轻量级Linux系统的RISC-V内核

本文发布于www.hackster.io,由东京理工大学的计算机学院开发,专用于教学与加速用(苏老师也一直认为这是RISC-V当前的主要方向)。目前市场上开源的RISC-V内核已经很多,但很少有公开的RISC-V计算系统是非常轻型且能跑Linux系统的。这一款RISC-V内核就可以运行在FPGA上,用Verilog编写的,需要很少硬件的资源就能跑起来,所以可以运行在一个低成本的FPGA上。来看一下...

weixin_34083807的博客 1867

BZOJ3531-[Sdoi2014]旅行

题解: 正常的树链剖分,但由于颜色的限制,不能只开一棵线段树,我们可以对每个颜色都开一棵线段树,但这样空间不行,我们只要建实时开点线段树,就可以了。 对于询问,只要在那个颜色的线段树上询问就好了。 Code:Code:Code: #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #define...

Mi-Queen 303

Python爬虫实战:医院科室排班智能采集系统 - 从零构建合规且高效的医疗信息爬虫(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 1301

【bzoj3531】[Sdoi2014]旅行 动态开点的线段树

动态开点的线段树 开c棵线段树 CC 对应删除一个节点,增加一个节点 CW 对应修改一个节点 QS 查询对应线段树中部分的和 QM 查询对应线段树中部分的最大值 所谓动态开点,就是每个节点用的时候再开,可以去掉许多无用的节点。 总共O(nlogn)级别个节点 #include #include #include #include #include #include #d

Oxer的专栏 2287

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

【报错】(pycharm运行程序)OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。 Error loading

1 报错 OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。 Error loading 2 分析原因 通过 activate Distance 进行自己创建的 Distance 虚拟环境中,输入python会显示环境中python的版本信息,再依次import,显然不会报错。 这是因为在Anaconda的环境下有支持 import torch 的 dll,而在PyCharm中使用的是自己创建的新环境,还缺少相应支持的dll,仅需在PyCharm中配置环境变量。.

静谧、淡雅 8623

3531: [Sdoi2014]旅行

3531: [Sdoi2014]旅行 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 1591  Solved: 708 [Submit][Status][Discuss] Description  S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面

CRZbulabula的博客 654

Android性能分析——GPU资源耗尽分析(二十六)

本文分析了Android车机系统中GPU资源耗尽导致应用闪退的案例。通过日志定位到EGL_BAD_ALLOC错误,表明系统无法分配足够图形资源创建EGL上下文。问题主要发生在渲染线程初始化EGL环境时,根源在于车机系统对GPU资源的严格限制(如EGLContext数量、GPU内存等)。文中详细解读了SkiaOpenGLPipeline和EglManager的源码调用链路,指出createContext()函数中的致命断言是崩溃的直接原因,并提出了移除断言、增加重试机制、优雅降级等改进方案。该案例揭示了资源受

小旭的专栏 677

【BZOJ】【P3531】【SDOI2014】【旅行】【题解】【树链剖分】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3531 考场上爆零

退役狗的专栏 1299

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

BZOJ3531 [Sdoi2014]旅行(洛谷P3313)

树链剖分 (线段树动态开点) BZOJ题目传送门 洛谷题目传送门 学了发线段树动态开点。 其实动态开点就是先不建树,每次修改的时候再往下建。这时左右儿子是编号的而不是原来的∗2∗2*2和∗2+1∗2+1*2+1。可以发现每次新建的节点数为lognlog⁡n\log n,那么总空间复杂度就是nlognnlog⁡nn\log n的。 这道题的话对每种颜色都开一个线段树。然后树剖上去+动态开点...

forezxl的博客 286

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

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

【BZOJ 3531】 [Sdoi2014]旅行

树链剖分+动态开结点~

Regina8023 2072

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

BZOJ 3531[Sdoi2014]旅行

BZOJ 3531[Sdoi2014]旅行 题面描述 传送门 题目分析 可以考虑到,如果这个题所有城市都只信一种宗教的话,就是一个sb树剖,直接进行链的查询和修改就能搞定。多个宗教的话,可以有一种暴力的思路对每一种宗教开线段树。但是空间不大够,考虑动态开点,把每个宗教类型当成不同的树根,然后在这个宗教的树上查询。 是代码呢 #include <bits/stdc++.h> using...

weixin_30950887的博客 103

BZOJ3531 [Sdoi2014]旅行

[Problem] bzoj3531 [S

_laekov 764

BZOJ 3531 : [Sdoi2014]旅行

3531: [Sdoi2014]旅行 >原题链接< Description S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且...

dianjia2824的博客 137

[bzoj3531][Sdoi2014]旅行 树链剖分

树链剖分

Unlimited Code Works 357

BZOJ 3531: [Sdoi2014]旅行 权值线段树_树链剖分

BZOJ 3531: [Sdoi2014]旅行 权值线段树_树链剖分 Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #define ll long long #define inf 100000000000 #defi...

EM LGH 162

BZOJ 3531 [Sdoi2014]旅行 树链剖分 线段树

DescriptionS国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。S国政府为每个城市标定了

Monica 473

bzoj3531【SDOI2014】旅行

树链剖分+线段树

AaronPolaris 1540

BZOJ 3531: [Sdoi2014]旅行

Description 一棵树支持以下操作。 修改颜色,修改权值。 问\(x,y\)路径上与\(x\)同色中最大值,和。 Solution 树链剖分。 对于每个颜色建一个动态开点的线段树即可。 Code /************************************************************** Problem: 3531 ...

aisen1985的博客 114

【BZOJ3531】【Sdoi2014】旅行 树链剖分。

题解: 开10W棵线段树,然后节点动态加。 天哪!!CFree竟然吞了我一个’&’符号。 恶心死了找了正经好一会。 代码: #include #include #include #include #define N 101000 #define LOGN 20 #define ls s[note].l #define rs s[note].r #define inf 0x

辗转山河弋流歌 2002

BZOJ3531 SDOI2014 旅行 树链剖分

题意:给定一棵树,维护:1、将u的种类改为c 2、将u的权值改为w 3、求u到v路径上种类为c的点的点权和 4、求u到v路径上种类为c的点的最大点权 题解:每个宗教建一颗线段树,然后随便做……考虑到如果把每一棵线段树都建完全会MLE,所以我们开动态内存。因为给出的评级都是正整数,所以如果一个区间的和为0,delete掉 #include <cstdio> ...

a18700013354的博客 149
上一篇: bzoj P1072 [SCOI2007]排列perm
下一篇: bzoj P4034 [HAOI2015]树上操作
Leo_Riddle
博客等级 码龄11年 4粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值