SPOJ COT 树上第k小

电商客服效率翻倍!手把手教你用影刀RPA+AI搭建智能回复系统(附实战配置) 本文详细介绍了如何利用影刀RPA+AI技术搭建电商智能客服系统,实现24小时在线回复,大幅提升客服效率。通过零代码配置、Excel词库管理和AI语义理解,系统能处理80%常规咨询,响应速度稳定在3秒内,特别适合中小电商降低成本并提升服务质量。 阅读详情

优快云代码云盘
要注意的是unique后返回的是开区间。
类似于一维主席树,这里的前缀是root[u]−root[v]−root[lca(u,v)]+root[fa[lca(u,v)]]root[u]-root[v]-root[lca(u,v)]+root[fa[lca(u,v)]]root[u]−root[v]−root[lca(u,v)]+root[fa[lca(u,v)]],因为包含lca(u,v)这个点,所以减去的话只减一次,然后再减去父亲。

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;

const int maxn = 2e5+5;
const int MX = 18;
struct node {
	int l,r,sum;
}T[maxn*40];
int n,m,a[maxn],cnt, root[maxn], tot, ver[maxn],b[maxn];
int dep[maxn], fa[maxn], p[maxn][20],len;
vector<int> G[maxn];	

void add(int u,int v) {
	G[u].push_back(v);
}
int getid(int x) {
	return lower_bound(b+1,b+1+len, x)-b;
}
void build(int l,int r,int& rt) {
	rt = ++cnt;
	T[rt].sum = 0;
	if(l == r) return;
	int mid = (l+r)>>1;
	build(l,mid, T[rt].l);
	build(mid+1,r,T[rt].r);
}
void update(int &x, int y, int pos, int l,int r) {
	T[++cnt] = T[y]; T[cnt].sum++; x = cnt;
	if(l == r) return;
	int mid = (l+r)>>1;
	if(mid >= pos) 
		update(T[x].l, T[y].l, pos, l, mid);
	else 
		update(T[x].r, T[y].r, pos, mid+1,r);
}
int query(int x,int y,int lca, int lca_fa, int k, int l,int r) {
	if(l == r) return l;
	int mid = (l+r) >> 1;
	int t = T[T[x].l].sum+T[T[y].l].sum-T[T[lca].l].sum-T[T[lca_fa].l].sum;
	if(t >= k) 
		return query(T[x].l, T[y].l, T[lca].l, T[lca_fa].l, k, l,mid);
	else 
		return query(T[x].r, T[y].r, T[lca].r, T[lca_fa].r, k-t, mid+1,r);
}
void dfs(int u,int f, int d) {
	dep[u] = d; fa[u] = f; 
	update(root[u], root[f],getid(a[u]),1, len);
	for(int i = 0; i < G[u].size(); ++i) {
		int v = G[u][i];
		if(v == f) continue;
		p[v][0] = u;
		dfs(v,u,d+1);
	}
}
void initLCA() {
	for(int j = 1; j <= MX; ++j)
		for(int i = 1; i <= n; ++i)
			p[i][j] = p[p[i][j-1]][j-1];
}
int LCA(int a,int b) {
	if(dep[a] < dep[b])
		swap(a,b);
	for(int i = MX; i >= 0; --i) {

		if(dep[p[a][i]] >= dep[b]) {
			a = p[a][i];
		}
	}
	if(a == b) return a;
	for(int i = MX; i >= 0; --i) {
		if(p[a][i] != p[b][i]) {
			a = p[a][i];
			b = p[b][i];
		}
	}
	return p[a][0];
} 


int main() {
	scanf("%d%d", &n, &m);
	for(int i = 1;i <= n; ++i) {
		scanf("%d", &a[i]);
		b[i] = a[i];
	}
	sort(b+1, b+1+n);
	// 这里要减1,否则是[)开区间
	len = unique(b+1,b+1+n)-b-1;
	// cout << len << endl;
	int u,v,k;
	for(int i = 0; i < n-1; ++i) {
		scanf("%d%d", &u, &v);
		add(u,v); add(v,u);
	}
	build(1,len,root[0]);
	dfs(1,0,1);
	initLCA();
	for(int i = 0; i < m; ++i) {
		scanf("%d%d%d",&u, &v, &k);
		int lca = LCA(u,v);
		printf("%d\n", b[query(root[u],root[v],root[lca],root[fa[lca]],k,1,len)]);
	}
	return 0;
}
基于Llama 3搭建中文版(Llama3-Chinese-Chat)大模型对话聊天机器人 前面两篇博文,我们在笔记本部署了Llama 3 8B大模型,使用Ollama搭建了基于Web 可视化对话机器人。在使用过程中,大模型经常出现中文问题英文回答的问题。本博文就用Llama3-Chinese-Chat微调模型来解决这个问题…… 阅读详情

相关推荐

避开这5个坑!ADNI数据库下载实操经验分享(含断点续传方案)

本文分享了ADNI数据库下载的5个常见陷阱及解决方案,包括高级搜索策略优化、断点续传技巧和数据完整性验证。特别针对大文件下载中断问题,提供了wget断点续传和分卷下载的实操方法,帮助研究者高效获取神经影像数据,避免重复下载和时间浪费。

git9versioner的博客 373

SPOJ COT(主席树 + LCA)

题目链接 主席树简单来说就是线段树+前缀和,每个节点的线段树存的是他以及之前所有与他相关节点的信息,现在询问u, v, 设u,v的lca是root, root的父节点是fa[root], 那么左节点的数量就是tVal[ lt[ t[u] ] ] + tVal[ lt[ t[v] ] ] - tVal[ lt[ t[ root ] ] ] - tVal[ lt[ t[fa[root] ] ] ]。 一开始我减了两次root的值,这样root的点就减了两次,就没了,所以就少了root这个点的值,以后写lca的

qq_43555854的博客 327

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 849

SPOJ - COT Count on a tree(主席树+LCA)

原题地址:https://vjudge.net/problem/SPOJ-COT 题意:求一棵树上两个点u,vu,vu,v之间点权第kkk小是多少。 思路:我们知道主席树是利用前缀和思想求区间第kkk大的,对于树上的两个点,我们可以参考用lcalcalca求两点之间距离的写法。就是从根节点开始建主席树,然后对于求u,vu,vu,v两个点,就利用[根节点,uuu节点]+[根节点,v节点]-[根节点,...

yiqzq的博客 255

Qwen2.5-Omni实战:5分钟搞定多模态AI模型本地部署(含Thinker-Talker架构解析)

本文详细介绍了Qwen2.5-Omni多模态AI模型的本地部署流程,包括硬件配置、环境准备和实战应用开发。特别解析了其创新的Thinker-Talker架构,该架构通过TMRoPE位置编码实现跨模态同步处理,大幅提升多模态任务效率。5分钟即可完成部署,适合开发者快速实现文本、图像和音频的联合处理。

weixin_29085865的博客 171

ElasticSearch集群搭建

docker安装es集群

weixin_46562226的博客 2024

SPOJ - COT 树上路径第k小

SPOJ - COT 题意:求树上路径第k小 思路:开始想树剖到主席树上做, 但是其实不需要,我们都知道求树上2点的距离 l = deep[u] + deep[v] - 2*deep[lca(u,v)],这里的深度deep其实就是路径长度的前缀和,同理可以以此建主席树,每颗线段树的前一个版本就是它的父亲,那么查询 路径 u->v的第k小就是在rt[u] + rt[v] - rt[lca(...

weixin_30326515的博客 251

出现 Tomcat:HTTP状态 404 - 未找到解决方法(图文分析)

出现如下问题 HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[/ajax_war_exploded/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.69 解决方法如下: 网上中的操作有步操作多数都误导 这个部署的环境目录上面是web.xml 下面的目录路径是web即可不用到webapp 保存重启服务器即可使用 其他配置中启动tomcat的操作具体 JRE 1.8 ...

码农研究僧的博客 13万+

【SPOJ-COT】Count on a tree【主席树】【LCA】

【题目链接】 同【BZOJ2588题解】 除过不强制在线,都是一样的。 /* Pigonometry */ #include #include using namespace std; typedef long long LL; const int maxn = 100005, maxnode = 2000005; int n, m, tot, num[maxn],

BraketBN 781

基于AI的智能开发环境—Trae在Web开发中的应用实战与性能评估【Trae项目实战】

Trae 是一款与 AI 深度集成的开发工具,提供智能问答、代码自动补全和基于 Agent 的 AI 自动编程能力,极大提升开发效率。它具备完备的 IDE 功能,如代码编写、项目管理和源代码管理等,同时还具备强大的 AI 助手,能够提供智能问答、实时代码建议、代码片段生成等服务。开发者可以通过自然语言与 AI 协作,从 0 到 1 开发项目,AI 会根据需求自动生成代码或创建文件。

一键难忘的博客 3万+

SPOJ COT(树上的点权第k大)

Count on a tree Time Limit:129MS Memory Limit:1572864KB 64bit IO Format:%lld & %llu SubmitStatus Description You are given a tree withNnodes.The ...

diaocuiguo2493的博客 181

手把手教你使用ConvNeXt训练自己数据集和推理,ConvNeXt模型训练(CVPR 2022),一个能挑战 Vision Transformer 的卷积神经网络,含完整代码和数据集

手把手教你使用ConvNeXt训练自己数据集和推理,ConvNeXt模型训练(CVPR 2022),一个能挑战 Vision Transformer 的卷积神经网络,含完整代码和数据集

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1448

Count on a tree SPOJ - COT (树上第k小)

#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; struct node { int ls,rs,sum; node(int ls=0,int rs=0,int sum=0) { this->ls=ls;this->rs=rs;this->s...

SEIZE THE DAY 258

VB摄像头监控

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[spoj COT - Count on a tree]树上第K小

[spoj COT - Count on a tree]树上第K小分类:Data Structure Presidental Tree template 1. 题目链接[spoj COT - Count on a tree]2. 题意描述N个节点的树,树上每个节点有一个点权。M次询问,每次询问一条链上的第kk小数。 数据范围:(N,M<=100000)(N,M<=100000) Time lim

Fighting! 725

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SPOJ COT 树上第K大(LCA+主席树)

转载请注明出处,谢谢http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents    by---cxlove 题目:给出一棵树,问两个节点之间路径经过的结点的权值的第k小的数。 http://www.spoj.com/problems/COT/  为了做这题,先去学了一下DFS+RMQ的LCA求法。 这题和普通的第K大类似。 普通的

窝不是爱酱,喵~~~~ 5123

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SPOJ COT Count on a tree(树上路径第k小 主席树)

题意: 求树上A,B两点路径上第K小的数 分析: 同样是可持久化线段树,只是这一次我们用它来维护树上的信息。 我们之前已经知道,可持久化线段树实际上是维护的一个前缀和,而前缀和不一定要出现在一个线性表上。 比如说我们从一棵树的根节点进行DFS,得到根节点到各节点的距离dist[x]——这是一个根-x路径上点与根节点距离的前缀和。 利用这个前缀和,我们可以解决一些

AC之路 852

SPOJ COT Count on a tree 树上第k大(主席树)

题意:http://www.spoj.com/problems/COT/en/ 题意:给定一棵树,树上每个节点都有一个权值,问两点之间路径上第K大值 思路:树上的第k大值,跟区间第k大有些不同,区间第k大每个值在前一个值的基础上新建一棵树,而树上第k大则是在父亲节点的基础上新建一棵树。查询的时候,答案就是root[v] + root[u] - root[lca(v, u)] - root[fa

弱智就要多努力 1950

SPOJ - COT Count on a tree (树上路径第K小,树上主席树)

Count on a tree  SPOJ - COT  You are given a tree with N nodes.The tree nodes are numbered from 1 to N.Each node has an integer weight. We will ask you to perform the following operation: u

HHH_go_的博客 662

SPOJ-COT 树上静态第k大 树上主席树

树上主席树和序列主席树完全没有区别 建树的时候直接dfs建树就好 这题wa了几发 原因是没有太搞清lca点的计算关系 #include&lt;bits/stdc++.h&gt; using namespace std; const int N=3e5+10; struct HisTree{ int l,r,sum; }T[N*20]; int tot,cnt,ver[N],hea...

Gipsy 484

SPOJ COT Count on a tree 树上第k小

题目:给你一棵n个节点的树,每个节点有一个数,有m个询问,问a到b的路径上第k小的数 思路:每一棵线段数都在它的父节点的基础上修改,这样就形成了相对于根的前缀和,设a,b的最近公共祖先是c,c的父节点是d,那么答案就是a+b-c-d #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #includ

ACVevtor的博客 327

spoj COT - Count on a tree(主席树 树上第K大)

COT - Count on a tree #tree You are given a tree with N nodes.The tree nodes are numbered from 1 to N.Each node has an integer weight. We will ask you to perform the following operation:

MR CODER 796

SPOJ COT 树上简单路区间第k大(主席树 + lca)

题目 题意 给出一棵 nnn 个节点的数,每个节点有一个权值。之后有 mmm 次询问,每次询问 u,v,ku, v, ku,v,k 表示,树上 uuu 到 kkk 的简单路径上,第 kkk 大的权值是多少 思路 一道图论+数据结构的特别有意思的题目,充分利用了主席树可减的特点。我们查询简单路径 (u,v)(u, v)(u,v) 时,可以通过 dfsdfsdfs 序建立主席树。而路径路径上的信息就是...

ShadowGhostH的博客 412

SPOJ-COT Count on a tree (静态树上第k小) 精讲

题目链接: Count on a tree 大致题意 给定一棵有nnn个节点的树, 节点上有权值wiw_iwi​. 有mmm次询问, 每次询问(a,b)(a, b)(a,b)最短路径上, 第kkk小的权值是多少. 解题思路 思路一: 树链剖分 + 主席树 + 树外二分/树内二分 复杂度: O(mlog3n)O(mlog^3n)O(mlog3n) / O(mlog2n)O(mlog^2n)O(mlog2n) 这是一个静态树上路径求第kkk小的问题, 如果是在序列上, 我们不难想到用主席树可以做到O(logn

Fau的博客 838

SPOJ - COT Count on a tree(树上第k大模板题)

You are given a tree with N nodes. The tree nodes are numbered from 1 to N. Each node has an integer weight. We will ask you to perform the following operation: u v k : ask for the kth minimum weight ...

Cymbals的博客 366
上一篇: Problem E Painting the Fence (区间染色)
下一篇: 【字符串算法】马拉车算法
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值