ZOJ 3649

基于EKF的UWB-IMU融合定位系统在农业机器人中的抗干扰优化与Matlab仿真 本文探讨了基于扩展卡尔曼滤波(EKF)的UWB-IMU传感器融合定位系统在农业机器人中的应用。通过Matlab仿真验证,该系统有效解决了农业环境中UWB信号遮挡和IMU累积误差问题,实现了厘米级高精度定位,显著提升了机器人在复杂场景下的抗干扰能力和导航可靠性。 阅读详情

倍增法DP

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 50100
#define POW 17
#define inf 1000000
using namespace std;
int val[N];
int head[N],cnt;
int p[N][POW],dep[N],mi[N][POW],mx[N][POW],dp[N][POW],dp1[N][POW],f[N];
struct relation{
    int u,v,w;
}r[N];
struct Edge{
    int v,next;
}edge[N*2];
void addedge(int u,int v){
    edge[cnt].v=v;
    edge[cnt].next=head[u];
    head[u]=cnt++;
    edge[cnt].v=u;
    edge[cnt].next=head[v];
    head[v]=cnt++;
}
void init(int n){
    int i,j;
    memset(head,-1,sizeof(head));
    memset(dep,0,sizeof(dep));
    memset(p,0,sizeof(p));
    for(i=1;i<=n;i++)f[i]=i;
    for(i=1;i<=n;i++)
        for(j=0;j<POW;j++)
            mi[i][j]=inf,dp[i][j]=dp1[i][j]=mx[i][j]=0;
    cnt=0;
}
void dfs(int u,int fa){
    int i,j;
    dep[u]=dep[fa]+1;
    for(i=head[u];i!=-1;i=edge[i].next){
        int v=edge[i].v;
        if(v==fa)continue;
        p[v][0]=u;
        mi[v][0]=min(val[u],val[v]);
        mx[v][0]=max(val[u],val[v]);
        dp[v][0]=val[u]-val[v];
        dp1[v][0]=val[v]-val[u];
        for(j=1;(1<<j)<=dep[u]+1;j++){
            p[v][j]=p[p[v][j-1]][j-1];
            mi[v][j]=min(mi[v][j-1],mi[p[v][j-1]][j-1]);
            mx[v][j]=max(mx[v][j-1],mx[p[v][j-1]][j-1]);

            dp[v][j]=max(dp[v][j-1],dp[p[v][j-1]][j-1]);
            dp[v][j]=max(dp[v][j],mx[p[v][j-1]][j-1]-mi[v][j-1]);

            dp1[v][j]=max(dp1[v][j-1],dp1[p[v][j-1]][j-1]);
            dp1[v][j]=max(dp1[v][j],mx[v][j-1]-mi[p[v][j-1]][j-1]);
        }
        dfs(v,u);
    }
}
int LCA(int u,int v){
    int i;
    if(dep[u]>dep[v]) u^=v,v^=u,u^=v;
    if(dep[u]<dep[v]){
        int del=dep[v]-dep[u];
        for(i=0;i<POW;i++)
            if(del & (1<<i))
                v=p[v][i];
    }
    if(u!=v){
        for(i=POW-1;i>=0;i--)
            if(p[u][i]!=p[v][i])
                u=p[u][i],v=p[v][i];
        u=p[u][0],v=p[v][0];
    }
    return u;
}
int getmaxdp(int u,int v){
    int ans=0,i,tmp=inf; // tmp记录最小值
    int del=dep[u]-dep[v];
    for(i=POW-1;i>=0;i--)
        if(del & (1<<i)){
            ans=max(ans,dp[u][i]);
            ans=max(ans,mx[u][i]-tmp);
            tmp=min(tmp,mi[u][i]);
            u=p[u][i];
        }
    return ans;
}
int getmaxdp1(int u,int v){
    int ans=0,i,tmp=0; // tmp记录最大值
    int del=dep[u]-dep[v];
    for(i=POW-1;i>=0;i--)
        if(del & (1<<i)){
            ans=max(ans,dp1[u][i]);
            ans=max(ans,tmp-mi[u][i]);
            tmp=max(tmp,mx[u][i]);
            u=p[u][i];
        }
    return ans;
}
int getmx(int u,int v){
    int ans=0,i;
    int del=dep[u]-dep[v];
    for(i=POW-1;i>=0;i--)
        if(del & (1<<i)){
            ans=max(ans,mx[u][i]);
            u=p[u][i];
        }
    return ans;
}
int getmi(int u,int v){
    int ans=inf,i;
    int del=dep[u]-dep[v];
    for(i=POW-1;i>=0;i--)
        if(del & (1<<i)){
            ans=min(ans,mi[u][i]);
            u=p[u][i];
        }
        return ans;
}
void solve(int u,int v){
    int lca=LCA(u,v);
    int a,b,c,d;
    a=getmaxdp(u,lca);
    b=getmaxdp1(v,lca);
    c=getmi(u,lca);
    d=getmx(v,lca);
    printf("%d\n",max(max(a,b),d-c));
}
bool cmp(struct relation a,struct relation b){
    return a.w>b.w;
}
int find(int u){
    if(f[u]==u)return u;
    return f[u]=find(f[u]);
}
int main(){
    int i,u,v,n,m,q;
    while(scanf("%d",&n)==1){
        init(n);
        for(i=1;i<=n;i++)
            scanf("%d",&val[i]);
        scanf("%d",&m);
        for(i=1;i<=m;i++)
            scanf("%d %d %d",&r[i].u,&r[i].v,&r[i].w);
        sort(r+1,r+1+m,cmp);
        int w=0;
        for(i=1;i<=m;i++){
            int uu=find(r[i].u),vv=find(r[i].v);
            if(uu!=vv){
                addedge(r[i].u,r[i].v);
                w+=r[i].w;
                f[uu]=vv;
            }
        }
        printf("%d\n",w);
        dfs(1,0);
        scanf("%d",&q);
        for(i=1;i<=q;i++){
            scanf("%d %d",&u,&v);
            solve(u,v);
        }
    }
    return 0;
}



Multisim14使用教程详尽版--(2025最新版) 摘要:本文详细介绍了Multisim14电路仿真软件的功能和使用方法。主要内容包括:1)主流电路仿真软件比较,突出Multisim在教学、竞赛设计中的优势;2)软件界面说明,涵盖菜单栏、工具栏、元器件库和仪器仪表;3)18类元器件分类详解及其使用操作;4)15种仪器仪表的原理和应用场景;5)电路原理图设计与仿真流程;6)基本电路分析方法(直流静态工作点分析、交流分析等)。文章还提供了硬件工程师笔试面试相关资源链接,涵盖电阻、电容、三极管等器件知识及AD软件操作指南。通过系统讲解,帮助用户掌握Multisim 阅读详情

相关推荐

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客 401

ZOJ 3649 倍增法DP、树链剖分、tarjan并查集

Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Practice ZOJ 3649 Description There are n individuals(2 n <= 30000). Everyone has one or more

Mr.Phoebe的专栏 869

在线迭代RLHF实战:从原理到实现,复现超越官方指令模型的工作流

大语言模型(LLM)的对齐技术是提升其与人类意图一致性的关键。其中,基于人类反馈的强化学习(RLHF)通过引入人类偏好信号,指导模型优化生成策略,是实现模型“有用”与“无害”的核心方法。其技术价值在于将抽象的“对齐”目标转化为可优化的奖励信号,从而显著提升模型在对话、推理等任务中的表现。然而,传统的离线RLHF存在数据分布偏移和奖励黑客等瓶颈。在线迭代RLHF通过构建“生成-评估-学习”的动态数据循环,让模型能够利用自身最新生成的数据进行持续优化,有效克服了上述问题,成为当前提升指令模型性能的前沿方向。本文

weixin_28725037的博客 368

zoj 3649 树上的倍增法

Social Net Time Limit: 5 Seconds      Memory Limit: 65536 KB There are n individuals(2 n <= 30000). Everyone has one or more friends. And everyone can contact all people by friend-relation. If

写东西的地方 825

SAP FICO CK40N批量发布标准价:常见报错排查与实战解决指南

本文详细解析了SAP FICO模块中CK40N批量发布标准价的常见报错及解决方案。从物料选择、成本核算到最终发布的全流程,提供了针对'已有标准成本估算记号'等典型报错的实战处理技巧,并分享了预防性维护与批量处理的高效方法,帮助财务人员提升工作效率。

weixin_29234509的博客 304

Vector CANape的使用记录

开门见山,今天想和大家分享下CANape使用记录,分享原因是近日在分析一个客户现场软件问题时,需要用到CANape来实时的监测ECU中的变量,因为之前对CANape的认知比较浅薄,觉得标定工程师使用他就足够了,但是这次的经历让我觉得需要写点东西来记录自己学习并使用他的过程。 相信大家能够在网上找到很多关于如何使用CANape的文章,从新建Project到后面的数据的观测、保存以及回放等等。我个人也是这么学过来的,所以我不打算从那些方面着手去描述如何使用她,而是根据我的真实使用过程以及问题的抛出到如何解决来

2万+

ZOJ 3649 Social Net

前言 这题鸽了有一段时间了,今天上午自己想了想,冒出了一个不错的思路,而且似乎和之前听做过的同学讲的不太一样。然后就开始敲了,编译完马上过样例。交上去WA,TLE,各种错误接连而至。一直到刚刚,才结束了半天多的Debug,发现是快读打挂了…(逃…) 这是一个极其惨痛的教训。 题意 给你有N个节点的树,每个点都有一个权值。有Q个询问,每次询问从一个点走到另一个点,问你走过节点的序列c1,...

CaptainSlow 339

【Kingbase人大金仓】授权文件更换

本文介绍了金仓数据库授权文件更换的步骤:1.通过ksql或客户端工具查询数据库版本;2.在官网下载对应版本的license.bat文件;3.替换前先备份原授权文件(使用tar命令压缩),再用新文件覆盖原文件。注意事项包括:版本号需严格对应,授权文件通常位于安装目录下,可使用find命令查找具体位置。操作需谨慎,建议先备份原文件以便恢复。

qq_34463511的博客 3459

Social Net ZOJ - 3649

题意 给出一幅有n个点的连通图,求出它的最大生成树,之后对于m个询问,每个询问包括两个数ab,求出a到b的路径上的极差最大值(必须用后面的数来减前面的) 方法 首先求出最大生成树,之后找到LCA,即可由它得到路径,但是发现暴力扫整一条路径肯定会TLE,因而可以用倍增的方法来预处理 dad[i][j]表示i节点的第(1 &amp;lt;&amp;lt; j)的父节点(即父节点的父节点的父节点,重复(1&amp;lt...

yzyyylx的博客 408

基于Costas环的载波同步实现及Matlab仿真

其中,第一个相位环接收带噪声的待同步载波,并产生一个相位误差信号,这个误差信号再通过第二个相位环进行反馈控制,使得两个相位环的相位差保持为90度,最终输出同步载波信号。接下来,我们可以编写Costas环的仿真程序,并将上面生成的信号输入到Costas环中进行同步,最终输出同步后的载波信号。综上所述,本文介绍了如何使用Matlab实现基于Costas环的载波同步,并给出相应的源代码。上述代码中,我们初始化了Costas环的各个参数,然后通过循环迭代实现了相位估计和相位误差控制,最终输出了同步后的载波信号。

2301_78484069的博客 1048

安装Openclaw[本地自动化AI助手]至windows【WSL2模式】系统 Openclaw for Windows

摘要:OpenClaw最佳兼容OpenAI系列模型,推荐使用ChatGPT API(需Auth鉴权),避免K*mi等模型导致的信用卡风险。Windows系统需满足WSL2支持条件(Win11或Win10 1903+版本)。安装需导入自签名根证书或跳过浏览器安全警告,通过离线包部署WSL发行版。使用时通过clawtoken命令获取网关认证令牌,并在浏览器完成设备配对。提供代购ChatGPT Plus账号服务(¥140/月),详细操作指南需加微信群获取文件。(150字)

qq_27246521的博客 456

[zoj3649]Social Net

here are n individuals(2 <= n <= 30000). Everyone has one or more friends. And everyone can contact all people by friend-relation. If two persons aren’t friends, they also can contact by their friends.

Rec.的博客 467

XGBoost原生接口和Sklearn接口参数详解

XGBoost原生接口和Sklearn接口参数详解

算法工程师 2654

zoj 3649 lca 倍增 DP

下课后直接奔实验室,月赛都快结束了,我擦,随便挑了一道题开始搞起来,是我喜欢的图论,心里暗暗欣喜,可是还是有点绕人,比赛结束刚好敲完,吃晚饭后,调了调,AC,呵呵 比赛的时候A的貌似很少,其实也不太难 链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3649 下面是我做过的倍增法求LCA以及倍增的DP的两个练习题

努力奋斗才能梦想成真 2076

VC中sqlite的使用

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ZOJ3649 Social Net

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3649 这题倍增维护信息之多,也能算是一道毒瘤题了…… 解题思路 这题分为两个部分,第一个是最大生成树,第二个是若干个询问,问在生成树上 x−&gt;yx−&gt;y x->y 的路径上最大的 ck−cj(ck&gt;=cj,j&lt;=k)ck−cj(...

chy2003的博客 215

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ZOJ:3649 Social Net

题目描述:戳这里 题解: 这题绝对有毒。。。 第一眼看到这题的题面感觉应该比较简单,只要倍增维护一下最大值和最小值就好了??? 然而码了70+行之后发现题目读错了。有一个限制条件,两个点x,y是“有向”的,x到y的路径序列中,最大值的位置编号一定要大于最小值的位置编号。。。 这样就比较麻烦了[汗]。 但是也不是不可做,我们“只需要”维护五个倍增数组就可以了。 f[i][j]f[i][...

dyt's Blog 333

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[ZOJ3649]Social Net 题解

前言 这道题目珂以说是很毒瘤了。 题解 首先克鲁斯卡尔求最大生成树,输出边权和。 倍增维护四个值:   链上最大值/最小值   链向上/向下最大差值 当然祖先是肯定要维护的。 然后把一条链经LCA分成两半。 分向上向下按照之前维护的值动态计算。 最后注意多组数据的维护(清空数组,边数之类的变量)。 代码 #include <cstdio> #include <cstring&gt...

weixin_30544657的博客 128

RMQ ZOJ 3649 Social Net

Social Net     Time Limit: 5 Seconds      Memory Limit: 65536 KB     There are n individuals(2  n <= 30000). Everyone has one or more friends. And everyone can contact all people by friend-r

We Can 788

zoj 3649 lca与倍增dp

参考:http://www.xuebuyuan.com/609502.html 先说题意: 给出一幅图,求最大生成树,并在这棵树上进行查询操作:给出两个结点编号x和y,求从x到y的路径上,由每个结点的权值构成的序列中的极差大小——要求,被减数要在减数的后面,即形成序列{a1,a2…aj …ak…an},求ak-aj (k>=j)的最大值。 求路径,显然用到lca。 ...

weixin_30693183的博客 130

【做题】zoj3649 Social Net——倍增

这题是吴老师推荐的,于是我就去做了。 根据题意,在完成最大生成树后,对于树上从x到y的一条路径,求出最大的ck-cj(j<=k,ci为路径上第i个点的权值)。 我一开始的想法是二分,记路径xy的中点是mid,路径ab的答案记为ans(a,b),最大值为mx(a,b),最小值为mn(a,b),那么,ans(x,y)=max{ans(x,mid),ans(y,mid),mx(mid,y)-m...

weixin_30614587的博客 183

ZOJ 3649 Social Net 最大生成树 + 并查集维护

题意:给定一个n(2v路径上顺序          得到的ci cj(i 题解:kruskal搞掉最大生成树,并查集维护up[] dw[] ma[] mi[] 分别表示从当前点走到lca的最优值,从lca走到当前点的最优值,从当点走到lca的最大值,          从lca走到当前点的最小值即可。           PS:比赛的时候把并查集搞错了唉,但是还是搞到了这个fb。

Uhh, call me zacky NOW!!! 1316

ZOJ 3649 Social Net(树上倍增)

一整天基本上只打了两题,每题半天,调起来简直爽爆。 There are n individuals(2 &lt;= n &lt;= 30000). Everyone has one or more friends. And everyone can contact all people by friend-relation. If two persons aren’t friends, they...

xyyxyyx的博客 271

ZOJ3469——对后面的影响考虑在当前状态

1.zoj3469 Food Delivery 这题是个好题,很锻炼思维。 首先,我们可以发现,送餐一点是在餐厅左右来回进行,DP可以从餐厅开始,向左右递推! 计算当前状态时,将后续状态的等待时间考虑在内! 轮到后面状态时,之需要考虑一步的转移,前面的时间都累加过了。 /* * p3649.cpp * * Created on: 2013-7-20 * Aut

309

2012年浙大9月月赛总结 (ZOJ Monthly, September 2012)

本次比赛由我、DTen和ssslpk完成,一台机子进行。       因为迟到了两个小时,最终只出四题,最终排名81。其中我出了2题,Dten出了一题二分匹配,sssplk出了一道组合数学。Dten的那道二分匹配是我和他一起做的,卡了好久,正是因为这题卡太久没时间敲A题,不然A题是绝对可以AC的,赛时想的思路赛后十几分钟就AC了。      正是这场比赛,让我明白:自己最熟悉的题应该放

2777

7月解题日志B

July_18 POJ3649 模拟题。 这个题加深了我对于模拟题的理解。 关键在于读懂题意,思路清晰。 这个题目的关键在于理解题,然后计算移动:先计算每个图形的最左最右位置,再把每一格把所有的图形按规则计算向左移动的格数,然后再根据移动的最左坐标建立新图像,最后根据规则去掉不输出的前导后续空白输出,一直在做算术。July_2

KidTech 1845

HDOJ 题目1395 2^x mod n = 1(水题 易错)

2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11712    Accepted Submission(s): 3649 Problem Description Give a number n

Jogging_Clown 560
上一篇: light oj 1128
下一篇: POJ 3728
Benzema67
博客等级 码龄15年 120粉丝 357原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值