【树结构】poj1470/ZOJ1141

是德频谱分析仪相位噪声测量实战指南:从原理到精准操作 本文详细介绍了是德频谱分析仪在相位噪声测量中的实战操作指南,从基础概念到高级技巧全面解析。通过5G基站时钟测量等实际案例,展示如何利用是德N9030B等设备精准测量相位噪声,并分享设备预热、参数设置、环境干扰排除等关键操作要点,帮助工程师提升测量精度和效率。 阅读详情

最近真的是连切水题都切不来了,

这个题的输入有点恶心。。

但是算法并不难,我用倍增lca水过了;

所谓倍增lca,就是用一个fa【x】【i】数组,记录离x这个节点网上2^i的节点是哪个。

fa【x】【i】=fa【fa【x】【i-1】】【i-1】;

话说Poj现在真是各种崩坏,只能转投zoj或者hdu了。。

附ZOJ1141代码,据说POJ加了新数据,导致过了ZOJ不一定能过POJ,所以换tarjan过poj了,但是理论上这个算法应该是也行的。。。请大牛教做人。。看看这个算法为什么过不了POJ

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector <int> g[2100];
int fa[2100][51],sum[2100],deep[2100];
void dfs(int v,int u,int d)
{
    deep[v]=d;
    for (int i=0;i<g[v].size();i++)
    {
        int tmp=g[v][i];
        if (tmp==u) continue;
        dfs(tmp,v,d+1);
    }
}
int lca(int x,int y)
{
    if (deep[x]<deep[y]) swap(x,y);
    int t=deep[x]-deep[y];
    for (int i=0;i<=20;i++)
        if (t&(1<<i)) x=fa[x][i];
    if (x==y) return x;
    for (int i=0;i<=20;i++)
        if (fa[x][i]!=fa[y][i])
            x=fa[x][i],y=fa[y][i];
    return fa[x][0];
}
int main()
{
    freopen("poj1470.in","r",stdin);
    freopen("poj14702.out","w",stdout);
    int n,tmp_n,u,v,root,q;
    while (scanf("%d",&n)==1)
    {
        for (int i=1;i<=n;i++) {g[i].clear();fa[i][0]=-1;sum[i]=0;}
        for (int i=1;i<=n;i++)
        {
            scanf("%d:(%d)",&u,&tmp_n);
            for (int i=1;i<=tmp_n;i++)
            {
                scanf("%d",&v);
                g[u].push_back(v);
                g[v].push_back(u);
                fa[v][0]=u;
            }
        }
        for (int i=1;i<=n;i++)
            if (fa[i][0]==-1)
                root=i;
        dfs(root,-1,1);
        for (int i=1;i<=20;i++)
            for (int j=1;j<=n;j++)
                fa[j][i]=fa[fa[j][i-1]][i-1];
        scanf("%d",&q);
        char str[30];
        while(q--)
        {
            int x1,y1;
            scanf("%s",str);
            sscanf(str,"(%d,%d)",&x1,&y1);
            sum[lca(x1,y1)]++;
        }
        for (int i=1;i<=n;i++)
            if (sum[i]>0)
                printf("%d:%d\n",i,sum[i]);
    }
    return 0;
}
存图vector还是好用
「API取数」FDL获取金蝶云星空的单据数据 本文介绍了如何使用FDL实现金蝶云API取数以及如何有效应对复杂的API数据处理场景。 阅读详情

相关推荐

5分钟搞定PettingZoo多智能体环境搭建:从安装到运行第一个Demo

本文详细介绍了如何在5分钟内完成PettingZoo多智能体环境的搭建,从安装到运行第一个Demo。通过精准的版本控制和常见问题解决方案,帮助开发者快速上手多智能体强化学习(MARL)环境配置,并提供了实战案例和性能优化技巧。

backprop5master的博客 221

poj 1470(简单LCA 倍增法)

题意:给你一个树,有若干个询问,然后让你统计每个结点在询问中做了几次LCA。按照结点顺序输出。 思路:这也是简单的LCA题目,我用的是倍增法。每次查询在相应结点标记上++,最后输出即可。这道题的输入处理比较烦,而且第一个输入的结点并不是根节点。这要注意一下 代码如下: 1 #include <iostream> 2 #include <cstdio> ...

weixin_34087301的博客 230

osgearth2.10 demo功能介绍

osgearth-2.10 demo: 说明: 1、运行环境win7 x64 旗舰版,CPU i5-6400 8核,8G内存; 2、括号内是对应demo的测试参数(.earth); 3、配置OSG_FILE_PATH; 4、参数命令行可以查看各个demo需要的输入参数; 5、前缀说明:gui界面程序、cmd控制台程序、non功能未知; 6、程序后括号里的non表示不需要通过命令行输入参数; 示例: 1、gui:osgearth_3pv(simple.earth):相机与地球的投影关系,Range表示相机

rach09的专栏 2421

POJ1470(LCA)

题目链接 题意:给你一棵树,和几对结点,让你求每个结点作为LCA出现的次数 (输入是真感人多实例测试) 思路:倍增法求LCA,统计出现次数 #include <cstring> #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> #inclu...

Ray.C.L的博客 573

GPU架构-SIMT

本文深度剖析了GPU的SIMT架构,从硬件实现层面解析其与SIMD的本质差异。SIMT通过将32个线程捆绑为warp执行,在标量编程模型下实现数据并行。文章对比了SIMD和SIMT的执行模型、分支处理机制及存储层次,指出SIMT是对SIMD的虚拟化抽象。重点分析了Volta架构引入的独立线程调度技术,以及访存合并对性能的关键影响。通过定量数据展示了各代GPU架构的寄存器文件规模和线程调度机制,为开发者优化GPU程序提供了硬件层面的理论基础。

技术引领业务创新 973

C++幂运算全解析:std::pow()函数详解与实战指南

本文详细介绍了C++标准库中的std::pow()函数,包括其基本用法、数学定义和多种重载形式。重点分析了该函数在科学计算、图形处理等领域的实际应用,并提供了性能优化方案如快速幂算法和预计算表。文章还探讨了精度控制、错误处理等关键问题,最后通过一个完整计算器实现展示了综合应用。std::pow()作为基础数学函数,合理使用能显著提升计算效率和代码可靠性。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 340

POJ1470.Closest Common Ancestors

题目链接:http://poj.org/problem?id=1470。 思路:给出一棵树和多个求两个节点的最近公共祖先的查询,使用tarjan 离线算法应对多对查询,使用并查集来合并顶点,不过这里不能够使用按秩合并,只能将root的所有孩子节点并到root上,代码如下: #include &lt;iostream&gt; #include &lt;vector&gt; #include &l...

qq_26347051的博客 258

13、无人机网络安全攻击检测:入侵检测系统综述

本文综述了无人机网络(FANETs)中的网络安全攻击与入侵检测系统(IDS)研究进展。文章介绍了无人机网络的架构设计、路由协议分类及移动模型,重点分析了DoS、DDoS、病毒蠕虫和零日攻击等常见安全威胁,并系统梳理了网络型、主机型、签名型、异常型、混合型等多种IDS的技术原理与应用。通过对比不同攻击类型及其检测机制,提出了综合使用多类IDS、更新签名库、优化路由、加强加密和建立应急响应等安全防护建议。同时展望了人工智能、量子安全和融合安全架构等未来发展趋势,旨在为提升无人机网络的安全性提供全面的技术参考。

wasm7browser的博客 162

POJ 1470(LCA)

Closest Common Ancestors   Description   有一颗树,求给定两节点的公共祖先,最后输出每个节点当做祖先的次数。 Input   输入文件包含多组测试数据。   对于每组测试数据的第一行为一个整数n(n&lt;=900),表示结点个数   接下来n行,每行输入形式为k:(t)k1 k2…kt;第一个数字...

niuniu0205的博客 774

HighTec安装使用

HighTec安装使用

qq_43552564的博客 3833

51单片机计算器(源程序+流程图+答辩报告+综合设计)

保姆级讲解!C语言编程,使用51单片机及LCD1602显示屏实现!

m0_57007304的博客 2万+

POJ-1470 Closest Common Ancestors Tarjan-LCA

题意:给定一棵树,然后给定若干组询问,问某些点被作为最近公共祖先的次数。 解法:刚刚一直不知道根在哪里给了出来,后来才发现给定的点一定是按照从层数低的节点指向层数高的节点,因此没有双亲的节点为根节点,然后运行tarjan算法即可。这里刚开始的时候我还想把最后的结果除以2输出,这里没有这个必要,因为两个节点一定有一个先后的遍历顺序,这个顺序保证了只被统计一次。 代码如下: #include...

weixin_33749131的博客 147

在 ABAP 中把变量一次写对:深入理解 FINAL 内联声明与不可变变量

摘要:ABAP中的FINAL声明操作符用于定义不可变变量,强调"当前上下文中的唯一写位置",能有效防止变量被意外修改,提升代码健壮性和可读性。官方建议优先在单次赋值的场景使用FINAL替代DATA。其核心规则包括:1)写位置唯一但可多次执行(如循环内);2)不创建块级作用域;3)对引用变量仅约束引用本身而非对象内容。典型适用场景包括:结果值只读、输入快照保存和中间结果保护。例外情况如游标变量不适用,因需多次写操作。正确使用FINAL可显著降低代码维护风险。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1044

POJ1470/ZOJ1141 Closest Common Ancestors(LCA离线算法)

题意很明显?真不觉的,我去啊,我是看了人家的翻译才明白的,那家伙,输入格式相当销魂啊…… 大意是说,给出一棵树(包含 N 个点),然后给出 M 次询问,每次询问都是两个点的编号,他们一定有一个最近公共祖先,最后让你输出每个点被当做最近公共祖先的次数(是 0 次的话就不输出了)。

laoda扯一扯 3856

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

poj 1470 Closest Common Ancestors LCA

题目链接:http://poj.org/problem?id=1470 Write a program that takes as input a rooted tree and a list of pairs of vertices. For each pair (u,v) the program determines the closest common ancestor of u and ...

weixin_30568591的博客 136

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

zoj 1905 Power String(后缀数组)

 题意:给定一个字符串L,已知这个字符串是由某个字符串S 重复R 次而得到的,求R 的最大值。 做法比较简单,穷举字符串S 的长度k,然后判断是否满足。判断的时候, 先看字符串L 的长度能否被k 整除,再看suffix(0)和suffix(k)的最长公共 前缀是否等于n-k。在询问最长公共前缀的时候,suffix(0)是固定的,所以RMQ 问题没有必要做所有的预处理, 只需求出hei

GODSPEED 855

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

UVaOJ712---S-Trees

712 - S-Trees Time limit: 3.000 seconds A Strange Tree (S-tree) over the variable set  is a binary tree representing a Boolean function . Each path of the S-tree begins at the root node and co

c随遇er安的专栏 683

poj 2127 zoj 2432 codeforces 10D 最长上升公共子序列

链接:http://poj.org/problem?id=2127 也不知怎么的就一下子一起搜到了这三个题,结果被坑了,在CF上AC的代码拿到poj 和 zoj都不能A,然后开始疯狂的造数据,终于被我造出了一组,然后发现开一维数组搞不定这个问题(反正我是搞不定了),于是还是老老实实的开了二维的dp,递归输出路径 这种DP应该很经典也很简单吧,dp[i][j]表示a数组的第i个数与b数组的第

努力奋斗才能梦想成真 1876

POJ 1470(LCA离线算法)

/* LCA离线算法: void(int root){ 判断当前节点root是不是要查询集合组中一个点,如果是,那么查看组另一个点 ,如查被标记了,那么找这个点的根节点;就是他们两个的最近的公共祖先; 标记root这个点; LCA(遍历 root下的所有结点) } */ #include &lt;iostream&gt; #include &lt;fstr...

julicliy的博客 557

POJ1470 - Closest Common Ancestors - (LCA tarjan)

POJ1470 - Closest Common Ancestors 链接 Closest Common Ancestors 贴一个Tarjan算法的讲解:优快云 - creatorx的博客 离线Tarjan : 利用并查集的合并。查询两个结点的公共祖先 先遍历树的 子节点 再将 根节点合并到父节点 ,其实就是理解 合并是一个树一个树进行的 合并遍历字节点的过程就是 当前以这个根节点为分叉点 找子节点,当要查询的两个子节点都遍历到时 共同祖先就是这个根节点 #include <iostream&

Gverzh的博客 177

POJ 1470 - Closest Common Ancestors (Tarjan)

基础,关于Tajan算法解析:https://blog.youkuaiyun.com/creatorx/article/details/70739834(????一下!) 题目地址 题目大意: Tarjan模板题,找到一对查询顶点的LCA(最近公共祖先)       解题思路就是上面的算法解析 代码: #include<iostream> #include<c...

weixin_30689307的博客 174

poj1470 Closest Common Ancestors(LCA离线优化)

http://poj.org/problem?id=1470 题意:给你点和关系,还有m次询问,求某点是最小公共祖先的次数。 思路:整体思路和poj1330相似,但是这题时间卡的相当紧,听别人说是多组询问。解决办法就是用数组存起来,LCA的时候每处理一个点就处理与该点有关的询问,这样遍历完也就处理完所有询问。保存次数我用的结构体,刚开始想复杂了。。还有输入输出格式也比较恶心,处理完

Iguodala的博客 695

POJ1470 RMQLCA

LCA裸题,要求的是每个点在答案中的出现次数。 试着写了一下在线的LCA算法(结果代码量比起那个离线的暴增。。。) 自己的代码:#include<cstdio> #include<cmath> using namespace std; int n; struct e { int t; e *n; e(int t,e *n):t(t),n(n){} }*f[901]={};

リーインカーネイション 525

poj 1470 lca-targan离线算法

题意: 给一棵树n个节点,然后一些k个询问u,v。 最后输出的是每个询问中被询问的u,v的最近公共祖先和被访问的次数。 解析: 用targan离线处理,每次遇到访问则cnt++。 代码: #include #include #include #include #include #include #include #include #include #i

渐近自由 486

poj1470

转载自他人的代码: tarjan

Inkbamboo专栏 814

POJ 1470 Closest Common Ancestors tarjan算法求LCA

题目:http://poj.org/problem?id=1470 题意:输入一个n,代表树有n个点,从1到n。接下来n行,每行第一个数为树上的点,然后一个数,假设是m吧,其后跟m个数,代表之前的点指向这m个点。然后有大于等于1组的查询,查询它们的LCA,最后输出每个点作为LCA的次数,为0的不输出。 思路:LCA模板题啦,求LCA时直接统计一下就好了,输入有点小恶心 #in

弱智就要多努力 1085
上一篇: 【数位DP】poj3252
下一篇: 【字符串处理】poj1035
Pro_space
博客等级 码龄12年 1粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值