我的算法修炼之路--8——预处理、滑窗优化、前缀和哈希同余,线性dp,图+并查集与逆向图

我的算法修炼之路--8——预处理、滑窗优化、前缀和哈希同余,线性dp,图+并查集与逆向图


在这里插入图片描述
💗博主介绍:计算机专业的一枚大学生 来自重庆 @燃于AC之乐✌专注于C++技术栈,算法,竞赛领域,技术学习和项目实战✌💗
💗根据博主的学习进度更新(可能不及时)
💗后续更新主要内容:C语言,数据结构,C++、linux(系统编程和网络编程)、MySQL、Redis、QT、Python、Git、爬虫、数据可视化、小程序、AI大模型接入,C++实战项目与学习分享。
👇🏻 精彩专栏 推荐订阅👇🏻
点击进入🌌作者专栏🌌:
Linux系统编程
算法画解
C++
🌟算法相关题目点击即可进入实操🌟
感兴趣的可以先收藏起来,请多多支持,还有大家有相关问题都可以给我留言咨询,希望希望共同交流心得,一起进步,你我陪伴,学习路上不孤单!

文章目录

前言

这些题目摘录于洛谷,好题,典型的题,考察各类算法运用,可用于蓝桥杯及各类算法比赛备战,算法题目练习,提高算法能力,补充知识,提升思维。
锻炼解题思路,从学会算法模板后,会分析,用到具体的题目上。
对应题目点链接即可做。

本期涉及算法:模拟 + 优化,图的性质 + 并查集,暴力枚举 + 预处理 + 滑动窗口(优化),线性dp,前缀和 + 哈希表 + 同余,正难则反-反图

题目清单

1.寻宝

题目:P1076 [NOIP 2012 普及组] 寻宝

在这里插入图片描述


在这里插入图片描述

解法:模拟 + 优化
根据题意模拟爬楼过程:

在这里插入图片描述

但是每层楼都去找那个房间的话,时间复杂度大,可以优化,用一个cnt[i]数组存:表示第i层楼有楼梯的房间数,用要找的第s个%cnt[i], 注意如果取模后=0,就是找第cnt[i]个符合要求的房间。

代码:

#include<iostream>usingnamespace std;typedeflonglong LL;constint N =1e4+10, M =110, MOD =20123; LL n, m;bool st[N][N];//标记楼梯信息 LL s[N][M];//维护指示牌信息 LL cnt[N];//用于优化,存第 i 楼有楼梯的房间个数intmain(){  cin >> n >> m;for(int i =1; i <= n; i++){ for(int j =0; j < m; j++)//注意:房间编号从0开始{ int a, b; cin >> a >> b;if(a){  st[i][j]=true; cnt[i]++;} s[i][j]= b;}}int pos =0; cin >> pos; LL ret =0;for(int i =1; i <= n; i++){  ret =(ret + s[i][pos])% MOD;//优化 LL step = s[i][pos]% cnt[i];if(!step) step = cnt[i];//注意 while(1){ if(st[i][pos]) step--;if(step ==0)break; pos++;if(pos == m) pos =0;//走了一圈 }} cout << ret << endl;return0;}

2.村村通

题目:P1536 村村通

在这里插入图片描述

解法:图的性质 + 并查集

这道题要将已经连接好的部分城镇和未连接的城镇都连通(可以是间接连接),连接的边数 = 连通块的个数 - 1。那么,就用并查集维护连通的点。 输入多组数据按ctrl + z结束。

#include<iostream>usingnamespace std;constint N =1010;int n, m;int fa[N

Read more

【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起

【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起

🌹欢迎来到《小5讲堂》🌹 🌹这是《小程序》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹 👨💻 作者简介 🏆 荣誉头衔:2024博客之星Top14 | ZEEKLOG博客专家 | 阿里云专家博主 🎤 经历:曾多次进行线下演讲,亦是 ZEEKLOG内容合伙人 以及 新星优秀导师 💡 信念:“帮助别人,成长自己!” 🚀 技术领域:深耕全栈,精通 .NET Core (C#)、Python、Java,熟悉主流数据库 🤝 欢迎交流:无论是基础概念还是进阶实战,都欢迎与我探讨! 目录 * 前言 * 解决过程 * 一、错误场景还原 * 1.1 错误发生的位置 * 1.2 常见的触发场景 * 二、深入理解 Vue

By Ne0inhk

Linux内核IRQ子系统:核心数据结构深度解析 (基于 Linux 6.6)

引言:中断处理的挑战与抽象 在复杂的现代计算系统中,硬件设备(如网卡、磁盘、键盘)通过中断信号来通知 CPU 有事件需要处理。然而,不同架构(x86, ARM)、不同总线(PCIe, USB)和不同控制器(GIC, APIC, 8259)的中断机制千差万别。如果每个驱动都直接与底层硬件打交道,内核将变得极其臃肿且难以维护。 Linux IRQ 子系统的诞生就是为了解决这一复杂性。它通过一套精巧的、分层的数据结构和接口,向上为设备驱动提供统一、简单的中断注册和管理 API(如 request_irq),向下则通过可插拔的“中断控制器驱动”来适配各种硬件。这套系统的核心就是我们今天要深入剖析的几大数据结构。 更多及时精彩的linux内核子系统分析,请关注VX公众号:linux内核漫游手册. 1. irq_desc - 中断描述符:中断世界的“户口本” 定义位置:

By Ne0inhk
从零开始学java--二叉树和哈希表

从零开始学java--二叉树和哈希表

数据结构基础 目录 数据结构基础 树 树形结构: 树的概念: 二叉树 概念: 两种特殊的二叉树: 二叉树的性质: 创建一个简单的二叉树: 二叉树的遍历 前序遍历: 中序遍历: 后序遍历: 层序遍历: 二叉查找树和平衡二叉树 二叉查找树: 平衡二叉树: 红黑树 哈希表 树 树形结构: 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 1. 有一个特殊的结点,称为根结点,根结点没有前驱结点。 2. 除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个集合Ti (1 <= i

By Ne0inhk
AN-93双麦降噪远场拾音模块技术解析:从算法到落地的全维度突破

AN-93双麦降噪远场拾音模块技术解析:从算法到落地的全维度突破

在语音交互技术全面渗透的当下,远场拾音与噪声抑制能力成为衡量音频设备性能的核心指标。单麦方案受限于无法区分空间声源信息,难以应对复杂噪声环境;多麦方案则面临成本高、体积大、集成难度高的痛点。AN-93双麦降噪远场拾音模块凭借“双核DSP+专属算法”的核心架构,在双麦硬件基础上实现了30-36dB的深度降噪与30cm-700cm的广域拾音,兼顾性能、成本与集成灵活性,为全场景音频设备升级提供了最优技术路径。本文将从技术原理、硬件设计、算法优化、性能验证及工程适配五个维度,深度解析AN-93的技术优势与落地价值。 一、核心技术原理:双麦阵列的空间声学信号处理逻辑 AN-93的核心优势源于对双麦阵列空间信息的精准挖掘与高效利用。与单麦仅依赖时域/频域信号处理的降噪方式不同,双麦方案通过两个麦克风的空间间距形成声学基线,利用目标语音与噪声在空间传播中的相位差、幅度差特性,实现“空域滤波+时域降噪”的双重抑制效果,从根源上分离目标语音与干扰信号。 其核心处理流程可分为三步:首先,通过双麦阵列同步采集声学信号,利用短时傅里叶变换(STFT)将时域信号转换为频域信号,提取各频点的相位差与幅度

By Ne0inhk