蓝桥杯学习——二叉树+奇点杯题目解析

news2025/3/21 0:22:47

基础认知

一、二叉树种类:

1.满二叉树。记深度k,节点数量2^k-1。

2.完全二叉树:除了底层,其余全满,底部从左到右连续。

3,平衡二叉搜索树:左子树和右子树高度差不大于1。

二、存储方式:

顺序存储:已知代码i的元素,其左右“孩子”代码为2i和2i+1。

三、遍历方式:

1.深度优先搜索(前中后序遍历)【递归】【迭代】

前:中左右;中:左中右;后:左右中。

2.广度优先遍历(层序遍历)【迭代】


奇点杯试题分析

1.高效求和判断完全平方数

#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;

// 计算满足条件的数对数量
ll count_pairs(ll n) {
    ll total = 0; // 用于存储结果
    const ll s_limit = 2 * n; // 两个数的最大和
    ll k_max = static_cast<ll>(sqrt(s_limit)); // 最大可能的平方根

    // 确保 k_max 是最大的满足 k_max^2 <= s_limit 的整数
    while ((k_max + 1) * (k_max + 1) <= s_limit) ++k_max;

    // 遍历所有可能的完全平方数
    for (ll k = 2; k <= k_max; ++k) {
        const ll s = k * k; // 当前完全平方数
        const ll a = max(1LL, s - n); // i 的最小值
        const ll b = (s - 1) / 2; // i 的最大值
        if (a <= b) {
            total += b - a + 1; // 累加满足条件的数对数量
        }
    }
    return total;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n;
    cin >> n; // 输入 n
    cout << count_pairs(n) << "\n"; // 输出结果
    return 0;
}

难点:使用暴力法会TLE.不能使用多重循环。 

2.计算连续子数组元素之和

#include <iostream>
using namespace std;
typedef long long ll;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n;
    cin >> n; // 输入数组长度
    ll total = 0; // 用于存储最终结果

    for (ll i = 1; i <= n; ++i) {
        ll x;
        cin >> x; // 逐个输入数组元素
        total += x * i * (n - i + 1); // 计算当前元素的贡献并累加
    }

    cout << total << "\n"; // 输出结果
    return 0;
}

 难点:不能直接使用数组存放元素,会造成段错误。

3. DSU算法

#include<bits/stdc++.h>
using namespace std;

int n, m, k;
int fa[100005]; // 并查集数组

// 查找函数,带路径压缩
int find(int x) {
    if (fa[x] == x) return fa[x]; // 如果 x 是自己的父节点,直接返回
    else return fa[x] = find(fa[x]); // 否则递归查找,并压缩路径
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int T = 1;
    cin >> T; // 读取测试数据组数
    while (T--) {
        cin >> n >> m; // 读取节点数 n 和边数 m

        // 初始化并查集
        for (int i = 1; i <= n; ++i)
            fa[i] = i;

        // 读取 m 条边并合并集合
        for (int i = 1; i <= m; ++i) {
            int x, y;
            cin >> x >> y;
            int xx = find(x), yy = find(y); // 查找 x 和 y 的根节点
            if (xx == yy) continue; // 如果已经在同一个集合,跳过
            fa[xx] = yy; // 合并集合
        }

        cin >> k; // 读取查询数 k
        int st;
        cin >> st; // 读取起始节点 st
        st = find(st); // 查找 st 的根节点
        bool flag = 1; // 标志位,表示所有查询节点是否与 st 在同一个集合

        // 检查接下来的 k-1 个节点
        for (int i = 2; i <= k; ++i) {
            int ed;
            cin >> ed; // 读取查询节点
            ed = find(ed); // 查找 ed 的根节点
            flag &= (st == ed); // 检查是否与 st 在同一个集合
        }

        // 输出结果
        puts(flag ? "YES" : "NO");
    }
    return 0;
}

 4.计算因子并统计次数

#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7;
const int MAX_A = 2e5 + 10;

vector<int> get_factors(int v) {
    vector<int> res;
    for (int i = 1; i * i <= v; ++i) {
        if (v % i == 0) {
            res.push_back(i);
            if (i != v / i) {
                res.push_back(v / i);
            }
        }
    }
    return res;
}

int cnt[MAX_A];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }

    long long ans = 0;
    for (int v : a) {
        auto factors = get_factors(v);
        long long sum = 0;
        for (int x : factors) {
            sum += cnt[x];
        }
        sum %= MOD;
        ans = (ans + sum) % MOD;
        cnt[v] = (cnt[v] + 1) % MOD; // 只增加当前元素的计数
    }

    cout << ans << endl;

    return 0;
}

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

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

相关文章

基于django+vue的购物商城系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…

AI安全、大模型安全研究(DeepSeek)

DeepSeek 点燃AI应用革命之火,但安全 “灰犀牛” 正在逼近 DeepSeek-R1国产大模型的发布,以技术创新惊艳了全球,更是极致的性价比推动国内千行百业接入 AI,政府、企业竞速开发智能业务处理、智能客服、代码生成、营销文案等应用,“落地效率” 成为第一关键词。然而与此相…

卷积神经网络 - 汇聚层

卷积神经网络一般由卷积层、汇聚层和全连接层构成&#xff0c;本文我们来学习汇聚层。 汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer)&#xff0c;其作用是进 行特征选择&#xff0c;降低特征数量&#xff0c;从而减少参数数量。 卷积层虽然可以显著减少网络中连接的…

论文分享:PL-ALF框架实现无人机低纹理环境自主飞行

在室内仓库、地下隧道等低纹理复杂场景中&#xff0c;无人机依赖视觉传感器进行自主飞行时&#xff0c;往往会遇到定位精度低、路径规划不稳定等难题。针对这一问题&#xff0c;重庆邮电大学计算机学院雷大江教授团队在IEEE Trans期刊上提出了一种新型自主飞行框架&#xff1a;…

Nodejs使用redis

框架&#xff1a;koa&#xff0c;通过koa-generator创建 redis: 本地搭建&#xff0c;使用默认帐号&#xff0c;安装说明地址以及默认启动设置&#xff1a;https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/ 中间件&#x…

GitHub 超火的开源终端工具——Warp

Warp 作为近年来 GitHub 上备受瞩目的开源终端工具&#xff0c;以其智能化、高性能和协作能力重新定义了命令行操作体验。以下从多个维度深入解析其核心特性、技术架构、用户评价及生态影响力&#xff1a; 一、背景与核心团队 Warp 由前 GitHub CTO Jason Warner 和 Google 前…

计算机视觉技术探索:美颜SDK如何利用深度学习优化美颜、滤镜功能?

时下&#xff0c;计算机视觉深度学习正在重塑美颜技术&#xff0c;通过智能人脸检测、AI滤镜、深度美肤、实时优化等方式&#xff0c;让美颜效果更加自然、精准、个性化。 那么&#xff0c;美颜SDK如何结合深度学习来优化美颜和滤镜功能&#xff1f;本文将深入解析AI在美颜技术…

应用商店上新:Couchbase Enterprise Server集群

可移植的冗余数据平台&#xff0c;这往往是创建可扩展的云原生应用程序的先决条件。而不依赖特定平台的工具可用于为多云、多区域工作负载提供企业级应用所需的灵活性。 ​Couchbase是一种高性能NoSQL数据库&#xff0c;专为当今复杂的云生态系统所需的动态扩展能力而设计。最近…

Redis解决缓存击穿问题——两种方法

目录 引言 解决办法 互斥锁&#xff08;强一致&#xff0c;性能差&#xff09; 逻辑过期&#xff08;高可用&#xff0c;性能优&#xff09; 设计逻辑过期时间 引言 缓存击穿&#xff1a;给某一个key设置了过期时间&#xff0c;当key过期的时候&#xff0c;恰好这个时间点对…

集成学习之随机森林

目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。&#xff08;基学习器是分类模型&#xff09; 2、回归问题集成。&#xff08;基学习器是回归模型&#xff09; 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…

在线JSON格式校验工具站

在线JSON校验格式化工具&#xff08;Be JSON&#xff09;在线,JSON,JSON 校验,格式化,xml转json 工具,在线工具,json视图,可视化,程序,服务器,域名注册,正则表达式,测试,在线json格式化工具,json 格式化,json格式化工具,json字符串格式化,json 在线查看器,json在线,json 在线验…

SAP的WPS导出找不到路径怎么办;上载报错怎么办

一.打开注册编辑器 二.输入以下地址 计算机\HKEY_CLASSES_ROOT\ExcelWorksheet\Protocol\StdFileEditing\Server 去除掉EXE后面的命令即可 二&#xff1a;WPS上载文件没反应怎么办 如何切换整合模式或多组件模式-WPS学堂 根据官方操作把整合模式改成多组件模式

Moonlight-16B-A3B: 变革性的高效大语言模型,凭借Muon优化器打破训练效率极限

近日&#xff0c;由Moonshot AI团队推出的Moonlight-16B-A3B模型&#xff0c;再次在AI领域引发了广泛关注。这款全新的Mixture-of-Experts (MoE)架构的大型语言模型&#xff0c;凭借其创新的训练优化技术&#xff0c;特别是Muon优化器的使用&#xff0c;成功突破了训练效率的极…

rust学习笔记17-异常处理

今天聊聊rust中异常错误处理 1. 基础类型&#xff1a;Result 和 Option&#xff0c;之前判断空指针就用到过 Option<T> 用途&#xff1a;表示值可能存在&#xff08;Some(T)&#xff09;或不存在&#xff08;None&#xff09;&#xff0c;适用于无需错误信息的场景。 f…

PyTorch系列教程:使用预训练语言模型增强文本分类

文本分类仍是自然语言处理&#xff08;NLP&#xff09;领域的一项基础任务&#xff0c;其目标是将文本数据归入预先设定的类别之中。预训练语言模型的出现极大地提升了这一领域的性能。本文将探讨如何利用 PyTorch 来利用这些模型&#xff0c;展示它们如何能增强文本分类任务。…

LabVIEW 线性拟合

该 LabVIEW 程序实现了 线性拟合&#xff08;Linear Fit&#xff09;&#xff0c;用于计算给定一组数据点的斜率&#xff08;Slope&#xff09;和截距&#xff08;Intercept&#xff09;&#xff0c;并将结果可视化于 XY Graph 中。本案例适用于数据拟合、实验数据分析、传感器…

nacos安装,服务注册,服务发现,远程调用3个方法

安装 点版本下载页面 服务注册 每个微服务都配置nacos的地址&#xff0c;都要知道 服务发现 2个是知道了解 远程调用基本实现 远程调用方法2&#xff0c;负载均衡API测试 远程调用方法3&#xff0c;注解 负载均衡的远程调用&#xff0c; 总结 面试题

Mac:JMeter 下载+安装+环境配置(图文详细讲解)

&#x1f4cc; 下载JMeter 下载地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi &#x1f4cc; 无需安装 Apache官网下载 JMeter 压缩包&#xff0c;无需安装&#xff0c;下载解压后放到自己指定目录下即可。 按我自己的习惯&#xff0c;我会在用户 jane 目…

Python IP解析器 ip2region使用

说明&#xff1a;最近需要在python项目内使用IP定位所在城市的需求&#xff0c;没有采用向外部ISP服务商API请求获取信息的方案&#xff0c;则翻了翻&#xff0c;在搞Java时很多的方案&#xff0c;在Python端反而可选择范围很小。 # 示例查询 ips ["106.38.188.214"…

labview与西门子1500plc进行S7通讯(仿真效果)

环境&#xff1a; 1.博图V16 2.S7-PLCSIM Advanced V3.0 3.labview2020 4.HslCommunication的dll文件 运行效果图 通过使用HslCommunication的库文件来对西门子plc进行通讯 labview代码 代码打包 通过网盘分享的文件&#xff1a;labview进行s7通讯测试.rar 链接: https:/…