蓝桥杯C/C++百校真题赛(1期)Day4题解(左孩子右兄弟、作物杂交)

news2024/12/24 10:57:20

Q1 左孩子右兄弟

在这里插入图片描述

f [ u ] 表示以 u 为根转化而成的二叉树(以下简称二叉树 ) 的最大高度 f [ u ] = m a x ( f [ j i ] ) + c n t [ u ] − 1 + 1 , j i 是 u 的所有儿子, c n t [ u ] 表示原树中 u 的儿子个数。因为 以 u 为根的二叉树肯定由 u 的一个儿子为根的二叉树构成来作为他的左半部 假设 f [ j t ] 是最大的那个 , 那么 u 除去 t 的所有儿子应该可以被加到 t 为根的子 树中作为兄弟,因为 t 为根的已经是二叉树,补充兄弟后一定是变高。 f[u] 表示以u为根转化而成的二叉树(以下简称二叉树)的最大高度\\ f[u] = max(f[j_i]) + cnt[u] - 1 + 1, j_i是u\\的所有儿子,cnt[u]表示原树中u的儿子个数。因为\\ 以u为根的二叉树肯定由u的一个儿子为根 的二叉树构成来作为他的左半部\\ 假设f[j_t]是最大的那个,那么u除去t的所有儿子应该可以被加到t为根的子\\ 树中作为兄弟,因为t为根的已经是二叉树,补充兄弟后一定是变高。\\ f[u]表示以u为根转化而成的二叉树(以下简称二叉树)的最大高度f[u]=max(f[ji])+cnt[u]1+1,jiu的所有儿子,cnt[u]表示原树中u的儿子个数。因为u为根的二叉树肯定由u的一个儿子为根的二叉树构成来作为他的左半部假设f[jt]是最大的那个,那么u除去t的所有儿子应该可以被加到t为根的子树中作为兄弟,因为t为根的已经是二叉树,补充兄弟后一定是变高。

/*
* @Author: gorsonpy
* @Date:   2022-12-19 10:36:45
* @Last Modified by:   gorsonpy
* @Last Modified time: 2022-12-19 10:45:57
*/
#include <iostream>
#include<cstring>
using namespace std;

const int N = 1e5 + 10;
int e[N], ne[N], h[N], idx;
int cnt[N], f[N];

void add(int a, int b)
{
  e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}

void dfs(int u, int fa) //计算以u为根的多叉树转化成二叉树后的最大高度
{
  for(int i = h[u]; ~i; i = ne[i])
  {
    int j = e[i];
    if(j == fa) continue;
    dfs(j, u);
    f[u] = max(f[u], f[j] + cnt[u]);
  } 
}
int main()
{
  memset(h, -1, sizeof h);
  int n;
  cin >> n;
  for(int i = 0; i < n - 1; ++i)
  {
    int x;
    cin >> x;
    add(x, i + 2);
    cnt[x] ++;
  }
  dfs(1, 0);
  cout << f[1] << endl;
  return 0;
}

Q2 作物杂交

在这里插入图片描述
在这里插入图片描述

正解应该是Spfa/BellmanFord(虽然官方给的tag是搜索?),题目不保证输入不会有A+B能杂交出多个种类的情况,也不保证某个种类只能由一种组合杂交而来,也不保证不会有相同输入。搜索可能成环。

把种类抽象为图的点,每个合成方式理解为一条边,对于 A + B 可以合成 C ,我们建立两条边,一个是 A 到 C ,边权为 B ,一个是 B 到 C ,边权为 A 。 利用 s p f a 的拓扑性质,判断每次合成一个种类时,他的子类是否已经得到 过。最后的 a n s = f [ t ] , t 为所求终点品类。 把种类抽象为图的点,每个合成方式理解为一条边,对于A+B可以合成\\ C,我们建立两条边,一个是A到C,边权为B,一个是B到C,边权为A。\\ 利用spfa的拓扑性质,判断每次合成一个种类时,他的子类是否已经得到\\过。 最后的ans = f[t],t为所求终点品类。 把种类抽象为图的点,每个合成方式理解为一条边,对于A+B可以合成C,我们建立两条边,一个是AC,边权为B,一个是BC,边权为A利用spfa的拓扑性质,判断每次合成一个种类时,他的子类是否已经得到过。最后的ans=f[t],t为所求终点品类。

#include<iostream>
#include<queue>
#include<cstring>

using namespace std;
const int N = 1e5 + 10;

int d[N], h[N], e[2 * N], ne[2 * N], w[2 * N], idx;
int n, m, k, t;
int tim[N];
bool st[N], hav[N];

void add(int a, int b, int c) // a, b可以合成c
{
    e[idx] = c, ne[idx] = h[a], w[idx] = b, h[a] = idx++;
}

int spfa()
{
    memset(d, 0x3f, sizeof d);
    queue<int> q;
    for(int i = 1; i <= n; ++i)
    {
        if(hav[i])
        {
            q.push(i);
            st[i] = true;
            d[i] = 0;
        }
    }
    
    while(q.size())
    {
        int x = q.front();
        q.pop();
        st[x] = false;
        
        
        for(int i = h[x]; ~i; i = ne[i])
        {
            int z = e[i], y = w[i];
            if(hav[x] && hav[y])
            {
                hav[z] = true;
                int cost = max(d[x], d[y]) + max(tim[x], tim[y]);
                if(d[z] > cost)
                {
                    d[z] = cost;
                    if(!st[z])
                    {
                        q.push(z);
                        st[z] = true;
                    }
                }
            }
        }
    }
    
    return d[t];
}
int main()
{
    memset(h, -1, sizeof h);
    cin >> n >> m >> k >> t;
    for(int i = 1; i <= n; ++i) cin >> tim[i];
    for(int i = 1; i <= m; ++i)
    {
        int x;
        cin >> x;
        hav[x] = true;
    }
    
    for(int i = 1; i <= k; ++i)
    {
        int a, b, c;
        cin >> a >> b >> c;
        add(a, b, c);
        add(b, a, c);
    }
    
    cout << spfa() << endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A Joint Neural Model for Information Extraction with Global Features论文解读

A Joint Neural Model for Information Extraction with Global Features code&#xff1a;BLENDER Lab | Software (illinois.edu)或者GerlinGreen/OneIE: Forked from OneIE: A Joint Neural Model for Information Extraction with Global Features (github.com) paper&…

超宽带UWB无线技术,厘米级测距定位,精准位置确定方案应用

UWB标签和锚点之间的双向测距测量它们的相对距离&#xff0c;这种方法用于例如安全访问应用程序&#xff0c;其中将根据标签设备的接近程度授予访问权限。 UWB不能被简单的中继攻击欺骗&#xff0c;因为它的距离测量不是基于信号强度&#xff0c;而是基于时间&#xff0c;中继…

git初识(四)

rebase(变基) 它能让git提交记录简洁 多个记录整合成一个记录 git rebase -i HEAD~3从最新记录开始依次找3条记录进行合并 git rebase -i 版本号从该版本号开始一直合并到最新记录 在做记录合并时&#xff0c;建议不要和已push到仓库的记录 beyond compare 在git的使用过程…

我国盆栽蔬菜行业发展势头向好 未来市场需求将保持持续攀升态势

盆栽蔬菜是指在花盆或其他容器内种植的蔬菜&#xff0c;供人观赏和采摘食用。盆栽蔬菜分为观果类蔬菜、彩色蔬菜、绿叶保健蔬菜、根茎类蔬菜等几类。其中观果类蔬菜包括彩色甜椒、矮生番茄、樱桃番茄、硬果番茄、观赏茄子、小型辣椒、袖珍西瓜及各种南瓜、甜瓜、西葫芦、黄秋葵…

Python 为什么如此设计?

大概两年半前&#xff0c;我萌生了要创作一个新的系列文章的想法&#xff0c;也就是“Python为什么”&#xff0c;试图对 Python 的语法及特性提出“为什么”式的问题&#xff0c;以此加深对它的理解&#xff0c;探寻使用技巧、发展演变、设计哲学等话题。 一直以来&#xff0…

智芯传感微差压气体压力传感器成功入围第三届“SIA感知领航优秀项目征集”年度杰出产品及技术成长型企业组

近日&#xff0c;由中国传感器与物联网产业联盟开展的第三届“SIA感知领航优秀项目征集”结果正式出炉&#xff0c;北京智芯传感科技有限公司&#xff08;以下简称“智芯传感”&#xff09;作为国内领先的MEMS传感器厂商&#xff0c;凭借旗下产品“微差压气体压力传感器”的卓越…

uniapp的生命周期

目录 一、应用生命周期 只能在 App.vue 里执行 1、onLaunch 2、onShow 3、onHide 二、页面生命周期 1、onLoad 监听页面加载 2、onReady 3、onShow 监听页面显示 4、onHide 监听页面隐藏 5、onUnload 监听页面卸载 三、组件生命周期 1、beforeCreate 2、…

Java培训Mycat安装启动

一、 安装启动 1、安装解压 解压缩文件拷贝到linux下 /usr/local/ 2、配置文件介绍 schema.xml 定义逻辑库&#xff0c;表、分片节点等内容 rule.xml 定义分片规则 server.xml 定义用户以及系统相关变量&#xff0c;如端口等 3、 配置文件修改 <?xml version”1.0…

MFC中窗口隐藏后再显示,子窗口没刷新(WS_CLIPCHILDREN,WS_CLIPSIBLINGS)

问题描述 非模态对话框下&#xff0c;显示了子窗口&#xff0c;但窗口隐藏后&#xff0c;再通过任务栏显示出来时&#xff0c;子窗口内容就不显示了。 正确的显示如下&#xff1a; 显示异常的情况 - 原因分析 显示父窗口时&#xff0c;父窗口会进行重绘&#xff08;我的理…

什么是数字化?企业该如何做数字化?

现在大家都在说数字化&#xff0c;数字化到底是什么&#xff1f; 数字化不是万能&#xff0c;只能赋能&#xff0c;数字化转型也不是口号&#xff0c;而是需要在具体规划和业务发展中深入思考和切实贯彻。 如今数字化俨然成为炙手可热的一个高频词汇&#xff0c;不论个人还是…

MySQL#2(数据模型,SQL通用语法,SQL分类)

目录 一.数据模型 二.SQL通用语法 三.SQL的分类 1.DDL DDL---操作数据库 DDL---操作表 2.DML DML---操作数据 3.DQL(重点) 基础查询 条件查询 排序查询 分组查询 分页查询 扩展: 聚合函数 一.数据模型 数据库在内存中是以文件夹的方式存在 数据表和数据是以文件的形式存…

有利润表模板的BI软件有哪些?

要分析利润&#xff0c;就需要制作利润表。有哪些可套用利润表模板的BI软件&#xff1f;关于这个问题&#xff0c;找奥威BI软件就对了。奥威BI软件有一套标准化的数据分析方案&#xff0c;内设数十张数据可视化分析报表模板&#xff0c;其中就包括了利润表模板&#xff0c;下载…

KNN算法预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买 项目实战代码+数据

K近邻算法通过计算被分类对象与训练集对象之间的距离,确定其k个临近点,然后使用这k个临近点中最多的分类作为分类结果。 如上图,当K=3时,它会被分类为 Class B。因为K=3时,3个临近点里有2个是B类的。 同理,K=7时它会被分类为 Class A,因为K=7时,7个临近点里4个是A类的…

C. The Third Problem(MEX,思维,组合数)[Codeforces Round #804 (Div. 2)]

题面如下&#xff1a; 思路or题解 因为是MEXMEXMEX问题&#xff0c;我们可以通过维护每一个数的 [l,r][l, r][l,r] 来进行求解 如果 kkk 维护的范围是 [l,r][l, r][l,r] 那么我们在计算 k1k 1k1 的时候可以发现&#xff1a; 在[l1,r−1][l 1, r - 1][l1,r−1] 如果 k1k 1k1…

CS61A 2022 fall lab0

CS61A 2022 fall lab0:Getting Started 不得不感叹实验网站是真的高级… 我打算用ubuntu做实验 文章目录CS61A 2022 fall lab0:Getting StartedIntroductionSetup1.Install a terminal2.Install Python 3Python3.7基于update-alternatives的Python默认版本系统级修改&#xff1…

在设备树中pinctrl的简单使用

目录 1 关于引脚的几个概念 2 设备树中pinctrl节点 2.1 定义各种pin bank 2.2 定义各种group 3 设备节点中要使用某一个 pin group 4 platform_device, platform_driver匹配 5 驱动中想选择、设置某个状态的引脚 6 总结 7 参考文档 1 关于引脚的几个概念 Bank: 以引脚…

NKOJ-P1327【NOIP 2011 DAY2-1】计算系数

希望这篇文章可以带我突破10000访问………… 题目描述 给定一个多项式 (axby)k(axby)^k(axby)k&#xff0c;请求出多项式展开后xnymx^ny^mxnym项的系数; 共一行&#xff0c;包含5 个整数&#xff0c;分别为a,b,k,n,ma,b,k,n,ma,b,k,n,m&#xff0c;每两个整数之间用一个空格隔…

趣谈网络协议-课程介绍

技能收获 掌握网络协议的知识框架&#xff1b;应对大厂面试的协议难题&#xff1b;驾驭网络协议的实用场景。 讲师介绍 刘超&#xff0c;前网易研究院云计算技术部首席架构师&#xff0c;15 年云计算领域研发及架构经验。曾在 EMC 做过类似 GFS 的分布式存储开发&#xff0c;…

【遥感科学】第三章 遥感成像原理

第三章 遥感成像原理与遥感图像特征 一、遥感平台 遥感平台是搭载传感器的工具&#xff0c;按照位置可以分为地面、航空航天航宇&#xff0c;按照作用可分为气象、陆地、海洋等。这里我们主要按照作用领域进行讨论 1.1 气象卫星 气象卫星发展的三个阶段&#xff1a; 20世纪6…

【MySQL】-索引以及树的常用数据结构分析

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【MySQL】 分享&#xff1a;纵一苇之所如&#xff0c;凌万顷之茫然。——《赤壁赋》 主要内容&#xff1a;MySQL中索引的介绍、创建索引、使用索引&#xff1b;索引背后的数据结构…