hdu-6162 Ch’s gift 主席树

新手避坑指南:用镭神C32和KVH 1750 IMU做标定,为什么直接上lidar_align会失败? 本文详细解析了使用镭神C32激光雷达和KVH 1750 IMU进行标定时常见的失败原因及解决方案。从IMU的微分传感器特性到Lidar-IMU标定的数学本质,再到可行的标定方案和实操注意事项,帮助新手避开认知陷阱,掌握正确的标定方法。 阅读详情

http://acm.hdu.edu.cn/showproblem.php?pid=6162

树上建主席树,和这题很像spoj count on a tree 只不过改一改查询函数和节点存的值即可

离线把所有点都离散化了。。。。后来发现根本不必要,在线查询,每次二分找一下就好了,因为离散的点多了,线段树自然会大一下,数组开多MLE,开少RE,交题二分刚好卡到28×1e5过了。。。。。

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<string.h>
using namespace std;
const int maxn=100010;
int n,m;
int v[maxn],b[3*maxn],t[maxn],tsize,tot=0;
struct charitree
{
    int l,r;
    long long tsize;
}a[maxn*28];
vector<int>w[maxn];

int fa[maxn],dep[maxn],up[maxn][21];
int build(int l,int r)
{
    int root=tot++;
    a[root].tsize=0;
    if(l==r)
        return root;
    int m=(l+r)>>1;
    a[root].l=build(l,m);
    a[root].r=build(m+1,r);
    return root;
}
int update(int root,int x,int k)
{
    int now=tot++;
    int tmp=now;
    a[now].tsize=a[root].tsize+k;
    int l=1,r=tsize;
    while(l<r)
    {
        int m=(l+r)>>1;
        if(x<=m)
        {
            a[now].l=tot++;
            a[now].r=a[root].r;
            now=a[now].l;
            r=m;
            root=a[root].l;
        }
        else
        {
            a[now].l=a[root].l;
            a[now].r=tot++;
            now=a[now].r;
            l=m+1;
            root=a[root].r;
        }
        a[now].tsize=a[root].tsize+k;     
    }
    return tmp;
}

int init()
{
    memset(up,0,sizeof(up));
    for(int i=1;i<=n;i++)
        up[i][0]=fa[i];
    for(int j=1;j<=16;j++)
    {
        for(int i=1;i<=n;i++)
        {
            up[i][j]=up[up[i][j-1]][j-1];
        }
    }
}
int lca(int lx,int rx)
{
    if(dep[lx]<dep[rx])
        swap(lx,rx);
    int a=rx,b=lx;
    int c=dep[b]-dep[a];
    for(int i=0;i<=16;i++)
    {
        if(c&(1<<i))
        b=up[b][i];
    }
    if(a==b)
        return a;
    for(int i=16;i>=0;i--)
    {
        if(up[a][i]!=up[b][i])
        {
            a=up[a][i];
            b=up[b][i];
        }
    }
    return fa[a];
}
long long query(int lx,int rx,int le,int ri,int l,int r)
{
    if(l>=le&&r<=ri)
    {    
        return a[rx].tsize-a[lx].tsize;
    }
    int m=(l+r)>>1;
    long long sum=0;
    if(m>=le)
    sum+=query(a[lx].l,a[rx].l,le,ri,l,m);
    if(m<ri)
    sum+=query(a[lx].r,a[rx].r,le,ri,m+1,r);
    return sum;
}
long long ask(int lx,int rx,int le,int ri)
{
    int l=1,r=tsize;
    int mx=lca(lx,rx);
    int f=fa[mx];
    long long ans=query(t[mx],t[lx],le,ri,1,tsize);
    ans+=query(t[f],t[rx],le,ri,1,tsize);
    return ans;
}
int len=0;
void hash1()
{
    sort(b+1,b+1+len);
    tsize=unique(b+1,b+1+len)-b-1;
}
int find_index(int x)
{
    return lower_bound(b+1,b+1+tsize,x)-b;
}
void dfs(int x,int ff)
{
    for(int i=0;i<w[x].size();i++)
    {
        if(w[x][i]==ff)
            continue;
        dep[w[x][i]]=dep[x]+1;
        fa[w[x][i]]=x;
        t[w[x][i]]=update(t[x],find_index(v[w[x][i]]),v[w[x][i]]);
        dfs(w[x][i],x);
    }
    return ;
}

struct node
{
    int u,uu,l,r;
}ques[100005];
long long ans[maxn];

int main()
{
    int i,j,l,r,k,u,uu;
    while(cin>>n>>m)
    {
        tot=0;
        len=0;
        memset(a,0,sizeof(a));
        memset(up,0,sizeof(up));
        for(i=1;i<=n;i++)
        scanf("%d",&v[i]),b[++len]=v[i];
        for(i=1;i<n;i++)
        {
            scanf("%d %d",&l,&r);
            w[l].push_back(r);
            w[r].push_back(l);
        }
        
        for(i=0;i<m;i++)
        {
            scanf("%d %d %d %d",&ques[i].u,&ques[i].uu,&ques[i].l,&ques[i].r);
            b[++len]=ques[i].l;
            b[++len]=ques[i].r;
        }
        
        hash1();
        t[0]=build(1,tsize);
        int root=1;
        w[0].push_back(root);
        dep[0]=0;
        dfs(0,0);
        init();
        
        for(i=0;i<m;i++)
        ans[i]=ask(ques[i].u,ques[i].uu,find_index(ques[i].l),find_index(ques[i].r));
        
        for(i=0;i<m;i++)
        {
            printf("%lld",ans[i]);
            if(i==m-1)
            printf("\n");
            else
            printf(" ");
        }
        for(i=0;i<=n;i++)
        w[i].clear();    
    }
    return 0;
}


在Windows11下安装完Ubuntu20.04双系统后配置环境的过程 在Windows11下安装完Ubuntu20.04双系统后配置环境的过程 1.NVIDIA驱动检测及安装 2.Anaconda的安装 3.安装cuda、cudnn、pytorch 4.其他报错 阅读详情

相关推荐

Android 13 GMS认证避坑:手把手教你搞定RKP配置,解决GTS测试fail

本文详细解析Android 13 GMS认证中的RKP(远程密钥配置)全流程,提供GTS测试失败的深度解决方案。从RKP核心概念到实战配置技巧,帮助开发者规避常见陷阱,确保设备顺利通过Google安全认证,特别适合需要快速掌握Android13 GMS认证的工程师参考。

weixin_29796279的博客 464

HDU6162(树上倍增,模板)

解题思路:一开始我想用树链剖分,但是感觉最坏的情况也有O(n^2)(如果出题者有意要卡你,也肯定过不了),其实用树上倍增最高复杂度也是O(n^2),如果这棵树是一条链。反正都有被卡的可能性,干脆就打一下树上倍增的模板吧。 #include<cstdio> #include<string> #include<vector> #include<algori...

qq_39861441的博客 425

Hermes深入理解及源码解析(二):Hermes的记忆机制

源码位置:tools/memory_tool.py存储内容为两个文件,放在 ~/.hermes/memories/:MEMORY.md:Agent 自己的笔记(环境事实、项目约定、工具坑、学到的东西)—— 上限 2200 字符USER.md:关于用户的画像(角色、偏好、沟通风格)—— 上限 1375 字符作为一个独立的工具注册在系统中(为了让智能体正确使用它,System Prompt()中明确下达了禁令存储目标存储位置数据类型持久偏好/事实MEMORY.md我是谁、我喜欢什么、环境配置。

qq_41984117的博客 559

HDU - 6162(树链剖分+线段树)

题意:给一棵树,每个节点上有权值;m次询问,每次询问两点间最短距离经过的点中,权值>=a&&权值<=b的所有点的权值之和 思路:赛中只知道是树剖+线段树,但是不知道如何处理这个区间ab,赛后才知道可以在线段树的节点中存下最大值Max和最小值Min,假如我们query到某个线段树节点x,如果该节点表示的线段中的Max < a || Min > b,那么表示这条线段中没有点在ab中,所以直接返回;如果Max <= b && Min >= a,直

zzulizyl的博客 279

【驱动适配】高通sa522平台tac5x1x驱动适配全指南

本手册详细介绍了TAC5301-Q1音频编解码器在高通sa525平台Linux系统下的驱动适配流程。主要内容包括:1)TAC5301-Q1核心特性(车载级音频Codec、关键接口和功能);2)驱动适配依赖(高通声卡驱动、ALSA SoC框架等);3)I2S协议原理及主从模式说明;4)硬件准备与检查要点;5)完整的驱动移植步骤(代码移植、Kconfig/Makefile修改、设备树配置)。该手册适用于嵌入式音频开发工程师快速完成TAC5301-Q1芯片的驱动移植与验证工作。

嵌入式博哥的博客 303

别再只抄代码了!深入理解MQ2传感器数据手册,搞定ppm换算公式

本文深入解析MQ2烟雾传感器的工作原理与ppm换算公式,从数据手册解读到数学建模,提供详细的校准与优化方法。通过实际案例和代码示例,帮助开发者准确测量气体浓度,解决常见问题,提升传感器应用的可靠性。

weixin_42713608的博客 504

HDU6162(树链剖分)

难受,翻了各种傻逼错误,导致现在才改完(函数没return,样例忘了换行,多余输出忘了删,估计是太晚了,脑子已经瓦特了),,,,昨天是2018WF  莫斯科拿了一个冠军一个亚军,北大主场拿了季军。这是一个树链剖分裸题,但是以前没看过,还比较简单,来几个博客点击打开链接;点击打开链接;;此题借鉴点击打开链接#include&lt;iostream&gt; #include&lt;cstdio&gt;...

DS00HY的小博客 497

学习海康VisionMaster之表面缺陷滤波

本文介绍了VisionMaster中表面缺陷滤波技术的应用。该技术通过数学变换抑制背景干扰、增强缺陷特征,适用于电池铝壳、垫圈/螺丝等无纹理背景的表面缺陷检测(划痕、凹坑、异物等)。操作流程包括:图像导入、轮廓定位、位置修正、参数设置(重点讲解滤波核尺寸/数量/标准差等关键参数的调整策略)。文章通过案例演示了如何通过多方向滤波响应识别表面划伤,并指出需结合blob分析进一步优化检测结果。该技术对工业质检具有实用价值,参数设置需结合缺陷特征与背景特性灵活调整。

yuhouxiyang的专栏 2828

HDU6162-Ch’s gift((离线+树链剖分)或(在线+树上主席树))

Ch’s giftTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 693 Accepted Submission(s): 241Problem Description Mr. Cui is working off-campus a

DrWells的博客 569

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 928

基于深度学习的活体人脸检测系统:YOLOv5、YOLOv6、YOLOv7、YOLOv8实现与UI界面设计

本博客详细介绍了如何基于YOLOv5、YOLOv6、YOLOv7、YOLOv8模型实现一个完整的活体人脸检测系统。系统包括数据集准备、模型训练、UI界面设计以及实时检测功能的实现。通过YOLO系列模型的应用,我们能够高效、准确地进行人脸检测和活体验证。未来,随着YOLOv9和其他新一代目标检测模型的出现,我们可以进一步提高检测精度和速度。此外,集成更多的传感器数据(如深度传感器、红外线传感器)可以使活体检测系统更加安全和稳定。

YOLO 540

HDU6162(主席树)一个没调出来的代码

Ch’s giftTime Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2144    Accepted Submission(s): 756Problem DescriptionMr. Cui is working off-campus and...

雪的期许 548

3、深入了解响应式扩展(Reactive Extensions)

本文深入探讨了响应式扩展(Reactive Extensions,Rx)的起源、核心概念及其在客户端和服务器端的应用。从Volta项目谈起,解析了Rx如何解决事件传输问题,并介绍了可观察对象(IObservable)和观察者(IObserver)的设计与实现机制。文章还详细讲解了Rx操作符、弹珠图的使用、拉模型与推模型的对偶性原理,并通过代码示例展示了如何将枚举转换为可观察对象。最后总结了Rx的优势,并展望其在未来软件开发中的广泛应用前景。

m2n3b4v5c6的博客 113

hdu 6162 Ch’s gift(主席树)

Mr. Cui is working off-campus and he misses his girl friend very much. After a whole night tossing and turning, he decides to get to his girl friend’s city and of course, with well-chosen gifts. He kno

黑码 588

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

2017多校第9场 HDU 6162 Ch’s gift 树剖加主席树

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6162 题意:给出一棵树的链接方法,每个点都有一个数字,询问U-》V节点经过所有路径中l < = x < = r的数字和 解法:主席树维护区间和,树剖查询,复杂度nloglog。 代码: #include <bits/stdc++.h> using nam...

aishangg437965的博客 144

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hdu 6162 Ch’s gift(主席树+树链剖分)

题意: 给出一棵树的链接方法,每个点都有一个数字,询问U-》V节点经过所有路径中l 思路: 维护一个主席树,对于每一个节点来说,都更新自己这个节点的一条链。建立轻重链找LCA,不难发现每一个u->v来说。 都是找root[u]+ root[v] -root[lca] -root[fa[lca]]。只是L,R的脚标要处理好,因为这个WA了好久。。 #include using n

GameRoad 939

计算机控制技术及应用

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

HDU 6162 Ch’s gift 【LCA暴力 or 主席树 + 树链剖分】

传送门 题目大意: 一颗树, 树上有点权, 每次询问u, v的树上路径上的点权范围在[a, b]内的权值和是多少. 思路: 这道题居然暴力能过, 而且巨快…. 后面还是写了写正解. 很明显我们需要把u - &amp;gt; v的路径剖下来, 然后问题就变成区间问题了, 询问区间中在一定范围内的数的和, 而我们知道主席树可以做区间中小于等于某个数的和是多少, 所以这个就可以用主席树来维护, 同时维护下&amp;...

Anxdada -- 我等风来也等你 353

hdu 6162 Ch’s gift(树链剖分+主席树)

题目链接:hdu 6162 Ch’s gift 题意: 给你一棵树,树上每个点有一个权值,现在有m个询问,每次询问给你一个s,t,L,R,问你从s到t的路径上,权值在[L,R]内的总和为多少。 题解: 我感觉我写复杂了,用树链剖分来维护路径,然后用主席树来建立权值线段树乱搞。 1 #include<bits/stdc++.h> 2 #define mst(a,b...

weixin_30278311的博客 110

【主席树】【最近公共祖先】hdu6162 Ch’s gift

题意:一棵树,每个点有个权值,m次询问,每次给你一条链和两个值a,b,问你这条链上权值在[a,b]之间的权值的和是多少。 std竟然是2个log的……完全没必要链剖,每个结点的主席树从其父节点转移过来,这样每个结点的主席树存储的就是它到根点的权值。 然后链询问,直接在主席树上作差,T[u]+T[v]-T[lca(u,v)]-T[fa(lca(u,v))]即可。只有一个log。 当然要先离散...

weixin_34203426的博客 89

L - Ch’s gift HDU - 6162 树链剖分(离线)

Ch’s gift Time Limit: 6000/3000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2534Accepted Submission(s): 887 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=...

weixin_30699235的博客 192

(离线树链剖分)HDU - 6162 Ch’s gift

题意: 一颗树,q次查询从u到v路径上所有权值在l到r之间的和。 分析: 一开始想写树上主席树,然后感觉内存不够就放弃。 然后想了一个小时,然后发现,询问似曾相识,回忆起一题。 然后发现直接离线搞就行了。 确切的说这题和HDU4417是完全一样的。 将询问排序,然后把小的点加进去,然后查询。 至于l和r,将两个分开分别处理就行了嘛。 算是比较裸的题了,居然想了这么久。 ...

dijieluan7764的博客 259

HDU 6162 Ch’s gift

HDU 6162 Ch’s gift线段树,离线题意给一棵树,每次询问:uv两点间的路上(包括uv),点权在ab之间的所有点点权和。思路 由于没有修改操作,一个显然的想法是离线处理所有问题 将询问拆成1-x,1-y,1-LCA(x,y),则处理的问题转化为从根到节点的链上的问题。 解决这个问题,我们可以在dfs时向treap插入当前的数,在退出时删除这个数,并且每次维护在该点上的答案

P.H.S 316

【Hdu】6162 Ch’s gift

真的这题名字里面就蕴含了对它的嘲讽:“62”,经典数位Dp题中的所谓的low 一开始准备写正解的,想了好久想到了链剖套主席树,然后,拍链剖和主席树一次性对了,试了试样例,调了调查询操作,过了样例正准备交,以为自己会很快地A掉,毕竟是O(nloglog)的复杂度,但是居然T掉了,真的给写了接近200行的我当头一棒,上网搜题解对拍自己造的随机数据,笔记本没有Vim只能自己找不同,发现200000行数...

Jerry_wang119的博客 312

hdu 6162 Ch’s gift

一棵 n 个点的树,每个节点有个 ci。m 次询问,每次求在点 s 到点 t 的最短路之间,a <= ci <= b 的 ci 的总和

iTom's blog 449

HDU6162-Ch’s gift

Ch’s gift                                                                        Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)                                

wang_128的博客 444

EOJ3335&&hdu6162 Ch’s gift 树剖,dfs序,离线查询,主席树:各显神通

多校第九场的02北邮出题,hdu上数据极弱赛后发现数据是个巨型菊花图,所以裸的LCA的大暴力是可以水过的树剖配合线段树维护最大最小值和区间和也是可以水过的当然,本文的三种解法不包括水的解法巨型菊花图???讲道理嘛章鱼哥加强了本题数据挂在了EOJ3335上对于正常的数据,这里笔者找到三种解法dfs序+离线查询 由于没有修改操作,一个显然的想法是离线处理所有问题 将询问拆成1-x,1-y,1-

cww97的博客 779
上一篇: hdu-6122 Color the chessboard 思维
下一篇: hdu 6170 Two strings dp
jerans
博客等级 码龄10年 54粉丝 255原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值