SPOJ QTREE Query on a tree(树链剖分)

Python + DeepSeek 完美结合:本地部署提效指南 随着生成式 AI 和深度学习技术的快速发展,如何将智能搜索工具与本地部署结合以提升效率成为了许多企业和开发者关注的重点。DeepSeek 是一款开源的智能搜索框架,结合 Python 的灵活性,能够实现高效、可靠的本地部署方案。本文将介绍如何通过 Python 和 DeepSeek 的完美结合,实现本地化部署并提升工作效率。通过将 Python 与 DeepSeek 结合,可以快速实现语义搜索的本地化部署,确保数据安全的同时提升工作效率。文件可直接作为 DeepSeek 的输入数据。 阅读详情

题意:

给你一棵树,然后查询点u到v之间的最大值,并且中途可能会修改某个边的值

思路:

http://blog.sina.com.cn/s/blog_6974c8b20100zc61.html
↑这里树剖讲的很好
树剖基本题,没什么坑点但是写的时候,对于点的上下关系经常判断错,导致wa了一上午。树剖整体思路就是将树的边进行划分,最终达到类似倍增那样的不断跳跃来节省时间,同时把树按边转化为线性,这样就能用线段树维护了。

错误及反思:

刚刚学完去写了下模板题,发现树剖的代码量确实不小,感觉树剖和dfs序都是差不多一种东西,都是把树转化为线性结构,只不过一个的核心是点的处理,一个核心是边的处理

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int N=20100;
pair<int,int> edge[N];
int segtree[N*4];
int depth[N],fa[N],son[N],top[N],si[N],id[N];
int n,tot,tid;
int first[N];
pair<int,pair<int,int> >  b[N];
void addedge(int x,int y)
{
    edge[tot].first=y;
    edge[tot].second=first[x];
    first[x]=tot++;
    edge[tot].first=x;
    edge[tot].second=first[y];
    first[y]=tot++;
}
void dfs1(int now,int bef,int dep)
{
    depth[now]=dep;
    fa[now]=bef;
    si[now]=1;
    for(int i=first[now];i!=-1;i=edge[i].second)
    {
        if(edge[i].first!=bef)
        {
            dfs1(edge[i].first,now,dep+1);
            si[now]+=si[edge[i].first];
            if(son[now]==-1) son[now]=edge[i].first;
            else son[now]=si[edge[i].first]>si[son[now]]?edge[i].first:son[now];
        }
    }
}
void dfs2(int now,int tp)
{
    id[now]=tid++;
    top[now]=tp;
    if(son[now]!=-1) dfs2(son[now],tp);
    for(int i=first[now];i!=-1;i=edge[i].second)
        if(edge[i].first!=fa[now]&&edge[i].first!=son[now])
            dfs2(edge[i].first,edge[i].first);
}
int findmax(int L,int R,int l,int r,int rt)
{
    if(L<=l&&R>=r)
        return segtree[rt];
    int m=(l+r)/2;
    int ans=0;
    if(L<=m) ans=max(ans,findmax(L,R,lson));
    if(R>m) ans=max(ans,findmax(L,R,rson));
    return ans;
}
int query(int L,int R,int l,int r,int rt)
{
    int fa1=top[L],fa2=top[R];
    int ans=0;
    while(fa1!=fa2)
    {
         if(depth[fa1]<depth[fa2])
         {
             swap(fa1,fa2);
             swap(L,R);
         }
         ans=max(ans,findmax(id[fa1],id[L],0,tid-1,1));
         L=fa[fa1];
         fa1=top[L];
    }
    if(L==R) return ans;
    if(depth[L]>depth[R]) swap(L,R);
    ans=max(ans,findmax(id[son[L]],id[R],0,tid-1,1));
    return ans;
}
void update(int pos,int val,int l,int r,int rt)
{
    if(pos==l&&l==r)
    {
        segtree[rt]=val;
        return ;
    }
    int m=(l+r)/2;
    if(pos<=m) update(pos,val,lson);
    else update(pos,val,rson);
    segtree[rt]=max(segtree[rt<<1],segtree[rt<<1|1]);
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        memset(first,-1,sizeof(first));
        memset(son,-1,sizeof(son));
        scanf("%d",&n);
        tot=0;tid=0;
        for(int i=0;i<n-1;i++)
        {
            scanf("%d%d%d",&b[i].second.first,&b[i].second.second,&b[i].first);
            addedge(b[i].second.first,b[i].second.second);
        }
        dfs1(1,1,1);
        dfs2(1,1);
        for(int i=0;i<n-1;i++)
        {
            if(depth[b[i].second.first]<depth[b[i].second.second]) swap(b[i].second.first,b[i].second.second);
            update(id[b[i].second.first],b[i].first,0,tid-1,1);
        }
        while(1)
        {
            char temp[10];
            int ta,tb;
            scanf("%s",temp);
            if(temp[0]=='D')
                break;
            else
            {
                scanf("%d%d",&ta,&tb);
                if(temp[0]=='Q')
                    printf("%d\n",query(ta,tb,0,tid-1,1));
                else
                    update(id[b[ta-1].second.first],tb,0,tid-1,1);
            }
        }
    }
}
ESD防护设计宝典(十九):元器件选型宝典——共模电感 然而,这位“大师”的脾气也颇为古怪,若设计者不解其性、用之不当,它非但不能抑制噪声,反而会引入信号完整性恶化、电源压降等新问题,甚至让您的系统EMC性能“雪上加霜”,导致项目在测试阶段功亏一篑。本文将带您深入共模电感的内在世界,从本质解析到参数详解,从设计陷阱到实战选型,全方位领悟其平衡艺术,掌握其应用核心,规避那些足以让项目翻车的致命陷阱。:这是存在于电路板内部的“家贼”。共模电感实质上是一个四端器件,它通过磁场的“加法”与“减法”运算,巧妙地实现了对共模噪声的抑制,同时为差模信号大开绿灯。 阅读详情

相关推荐

混合开关电容DCDC变换器技术解析与工程应用指南

在电源设计领域,传统DCDC变换器在高降压比或高升压比场景下,往往面临占空比过窄、开关应力大、效率偏低等瓶颈。开关电容变换器虽能实现固定比例的电压变换,却受限于调节能力。混合开关电容DCDC变换器通过“开关电容网络粗调变比+电感式DCDC细调输出”的策略,兼顾高效率、高功率密度与宽调压范围。本文梳理了其典型拓扑(如2:1/4:1 SC+Buck)、关键对比、控制策略(含软充电)及工程应用中的常见问题,帮助电源工程师在服务器供电、快充、车载电源等场景下快速选型与调试。

weixin_29164185的博客 311

SPOJ QTREE - Query on a tree 【树链剖分】

QTREE - Query on a tree #number-theory You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3...N-1. We will ask you to perfrom some instruc

世界很大 550

从原理到实践:MIPI D-PHY v1.2的HS-Deskew功能全解析(附时序图详解)

本文深入解析MIPI D-PHY v1.2的HS-Deskew功能,从技术背景到实现机制,详细介绍了其在2.5Gbps高速传输中的关键作用。通过时序图详解和实测数据,帮助工程师理解并应用这一技术,解决信号完整性问题,提升系统可靠性。

weixin_30300225的博客 307

SPOJ - QTREE Query on a tree树链剖分

SPOJ - QTREE Query on a tree树链剖分 You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3…N-1. We will ask you to perfrom some instructions of the fol

weixin_40433319的博客 327

【RL in VLA】VLA中的强化学习

本文提出了一种名为 Reinforcement Learning Distilled Generalist(RLDG) 的方法,通过强化学习生成高质量训练数据来微调机器人基础模型。通过在多个精确操作任务上的实验,我们证明了 RLDG 在成功率和泛化能力上显著优于使用人类演示的传统微调方法。RLDG 不仅减少了对人类演示数据的依赖,还展示了在复杂多阶段任务中的灵活性和有效性。

三木今天学习了嘛の博客 2257

Unity Shader学习笔记/Urp/水墨风效果

Unity Shader学习

qq_63133691的博客 2116

[spoj QTREE Query on a tree]树链剖分

[spoj QTREE Query on a tree]树链剖分题目链接:[spoj QTREE Query on a tree] 题意描述:给定一棵顶点数为N的带权树。有Q次操作,每次操作或者改变第ii条边的权值,或者查询顶点uu到vv的路径上面的最长边。 解题思路: 树链剖分的入门题。今天比较系统的学习了一下树链剖分。其实树链剖分就是将树上的边(点)映射到若干条连续的线段上。然后结

Fighting! 662

pgAdmin4备份恢复实战:从安装到避坑指南

本文提供了一份详尽的pgAdmin4备份恢复实战指南,涵盖从安装配置到执行备份恢复的全流程。针对Windows环境下的浏览器兼容性、二进制路径配置等常见问题,给出了具体解决方案。重点强调了使用pgAdmin4进行备份恢复的可靠性,特别是在处理包含PostGIS等扩展的数据库时,能有效避免数据类型和权限错误,确保数据迁移的完整性与安全性。

weixin_29266007的博客 438

SPOJ 375 QTREE Query on a tree 树链剖分

题目:http://www.spoj.com/problems/QTREE/en/ 题意:给定一棵有n个点的树,每条边都有权值。有两种操作,第一种是询问两点间路径上边权的最大值,第二种是改变输入顺序中第i条边的权值 思路:树链剖分第一题。 siz[v]表示以v为根的子树的节点数 dep[v]表示v的深度(根深度为1) top[v]表示v所在的链的顶端节点 fat[v]表

弱智就要多努力 533

二十一、SAP-库存管理

业务逻辑、功能讲解、图文解析、章节总结

m0_72403327的博客 1808

电机驱动和电源等大电流设计中的并联 MOSFET设计

在电机驱动等应用中,半桥拓扑(通常为 3 相)用于生成在电机中产生正扭矩或负扭矩的交流电源信号。想要更高的输出电流能力,只有通过并联形成每个功能开关的 MOSFET,才能实现高输出电流。当多个功率 MOSFET 并联以增加系统整体电流能力容量时,通常假设电流在并联器件之间均等分配或均等共享。然而,在并联 MOSFET 时,需要考虑并联器件之间的电流分配。PCB 布局的若干特性和特定的MOSFET 参数会影响这种分配,并在参数不匹配或布局不对称时导致均流不平衡。

小幽余生不加糖 2485

spoj375QTREE - Query on a tree(树链剖分)

题目链接 QTREE - Query on a tree #tree You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3...N-1. We will ask you to perfrom some instru

fouzhe的博客 528

基于深度学习的交通标志识别系统:使用YOLOv10、UI界面及自定义数据集的实现

实时检测和分类交通标志。提供一个友好的用户界面,方便用户上传图片或视频进行检测。收集和显示检测结果,以便进行进一步分析。YOLO(You Only Look Once)是一种高效的目标检测算法,它能够在一次前向传播中同时进行目标定位和分类。YOLOv10是YOLO系列的最新版本,具有更好的检测精度和速度。本项目成功实现了基于YOLOv10的交通标志检测与识别系统。通过实时检测与分类,系统能够有效识别出各种交通标志,为智能交通应用提供支持。

YOLO 1234

SPOJ - QTREE Query on a tree 树链剖分模板题

传送门:SPOJ - QTREE 题意:给出一棵树,和两种操作: 1.把第i条边的权值改成ti。 2.询问a节点到b节点之间的路径中的最大边权值。 思路:树链剖分裸题。 树链剖分学习:点击打开链接 个人理解:树链剖分有点类似于树的dfs序 + 线段树维护,不过是用各种数据结构去维护划分出来的边罢了。 代码: #include #define ll long long #define

WA是一笔财富 251

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VC中sqlite的使用

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

SPOJ QTREE Query on a tree 树链剖分

新的树链剖分模板实验

Code of Duty 864

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[spoj 375]QTREE - Query on a tree[树链剖分]

You are given a tree (an acyclic undirected connected graph) withNnodes, and edges numbered 1, 2, 3...N-1. We will ask you to perfrom some instructions of the following form: CHANGE i ti: ...

dirushi6322的博客 113

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SPOJ QTREE Query on a tree(树链剖分)

SPOJ QTREE Query on a tree 题目链接 树链剖分基础题 代码: #include #include #include #include using namespace std; const int N = 10005; int dep[N], top[N], sz[N], son[N], fa[N], id[N], idx, val[N]

Remilia's 1047

【SPOJ】【树链剖分】【线段树】QTREE Query on a Tree

SPOJ QTREE Query on a Tree 题目 题目传送门 题目大意 给定一棵节点数为NNN的树,有两种操作:CHANGE i ti,QUERY a b,分别表示将编号为i的边的权值改为ti,查询由节点a到节点b路径中的最大值。对于每一个QUERY操作,输出节点a到节点b路径中的最大值。 思路 树链剖分板子题。 我们使用线段树来维护最大权值,则这道题树...

IDDFS 476

SPOJ - QTREE3Query on a tree again!——树链剖分

【题目描述】 SPOJ - QTREE3Query on a tree again! 【题目分析】 题目要求是输出从111到xxx的路径上遇到的第一个黑色的点。我们可以用树链剖分(不了解的同学请出门左拐,详见树链剖分入门) 我们用线段树维护每个区间第一次遇到黑点的位置,这样访问出的点同样是从1开始路径上的第一个点。因为我们总是从根节点1开始,我们在访问的时候从后往前每次访问重链时在线段树上都是一...

T_T233333333的博客 269

SPOJ - QTREE2 Query on a tree II树链剖分

SPOJ - QTREE2 Query on a tree IIYou are given a tree (an undirected acyclic connected graph) with N nodes, and edges numbered 1, 2, 3...N-1. Each edge has an integer value assigned to it, representing

weixin_40433319的博客 252

SPOJ 375 QTREE Query on a tree 树链剖分水题

题目大意: 给定一棵树后两种操作 修改边权, 询问两点间路径上的边权的最大值 大致思路: 树链剖分水题 剖分之后线段树维护最大值即可, 单点更新区间查询 代码如下: Result  :  Accepted     Memory  :  4403 KB     Time  :  490 ms /* * Author: Gatevin * Created Time:

Gatevin的专栏 530

[SPOJ375]QTREE - Query on a tree【树链剖分】

题目描述 给你一棵树,两种操作。 修改边权,查找边权的最大值。 分析 我们都知道,树链剖分能够维护点权。 而且每一条边只有一个,且唯一对应一个儿子节点,那么就把信息放到这个儿子节点上。 注意,lca的信息不能算到,也就是当查询到了\(top[u]=top[v]\)的时候,要从\(idx[u]+1\)到\(v\)的查询,因为\(idx[u]\)为lca。 代码 #include <b...

weixin_30900589的博客 127

SPOJ - QTREE Query on a tree ( 树链剖分 入门)

传送门:http://www.spoj.com/problems/QTREE/en/ You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3...N-1. We will ask you to perfrom some instructions

Vision 455

SPOJ QTREE Query on a tree 树链剖分

树链剖分,注意一下边的关系即可。传送门:http://www.spoj.com/problems/QTREE/en/#include <map> #include <set> #include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #in

NM的专栏 420

SPOJ375[QTREE - Query on a tree] 树链剖分

spoj375 QTREE 树链剖分

Venishel的博客 318

SPOJ-QTREE Query on a tree 树链剖分

欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - SPOJ-QTREE 题意概括   给你一颗树,每两点之间有权值,然后改变一些权值,问一条路径上的最大值。 题解   树链剖分裸题。 代码 #include <cstring> #include <algorithm> #includ...

weixin_30627341的博客 127
上一篇: Codeforces Round #301 (Div. 2) D. Bad Luck Island(概率dp)
下一篇: SPOJ GRASSPLA Grass Planting(树链剖分)
Roll_Keyboard
博客等级 码龄9年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值