- 博客(40)
- 收藏
- 关注
原创 第3期:PCB设计教程:自动布线与导出制版文件详解
这篇教程详细讲解了PCB设计中的自动布线流程及文件导出。主要内容包括:布线前调整PCB布局的实例(如接口优化),自动布线工具的使用步骤,处理布线失败的技巧,铺铜处理的注意事项,以及DRC检查中常见问题的解决方法(如焊盘间距冲突)。文章还介绍了Gerber文件导出流程、BOM表生成,以及PCB表面金线绘制等实用技巧。通过网格铺铜、忽略GND网络等策略,可提高布线效率和质量,最终确保设计符合免费打样要求(7.621×9.785cm)。
2025-05-31 02:45:15
876
原创 第4期:键盘PCB设计与制造全流程详解(下单PCB)
本文详细介绍了键盘PCB从设计到下单制作的全流程。首先需要在嘉立创平台领取优惠券以降低成本,随后上传PCB文件并选择制板参数(如1.6mm板厚、黑色基板等)。成本构成包括基础制板费(可优惠)、元器件费和换料费,其中PCB美化设计成本较高。通过删除或替换非标元件(如USB接口、编码器等)可大幅降低费用,单板成本可控制在20元以内。文章还提供了主控芯片选择(ATmega32U4)和焊接策略建议,为DIY键盘爱好者提供了实用参考。
2025-05-31 02:21:43
304
原创 第2期:APM32微控制器键盘PCB设计实战教程
APM32键盘PCB设计核心总结:采用高性价比APM32F103CBT6主控(5.6元,兼容STM32),设计5×4矩阵键盘时通过1N4148W二极管防信号反冲,集成EC11旋钮(A/B引脚检测旋转,D/E作按键),PCB布局主控居中、Type-C接口灵活放置,电源与信号线分层布线(5V线宽≥12mil,GND星型接地),支持WS2812B RGB灯光(接5V独立供电),并预留OLED/蓝牙扩展接口,以40%成本实现STM32同等性能,适合DIY客制化键盘开发。
2025-05-29 21:39:38
1409
原创 第1期:DIY键盘教程:APM32主控篇
本教程介绍如何用国产APM32F103CBT6芯片(单价5.6元)替代高价STM32U4(40元以上)制作DIY键盘。详细讲解从PCB布局设计到固件配置的全过程,包括使用在线工具设计键位、生成PCB文件,以及旋钮等特殊元件的设计要点。APM32芯片在价格(仅为STM32U4的1/8)、性能和扩展性方面优势明显,虽需手动修改固件但操作门槛不高。教程还提供了利用免费打样服务等实用技巧,帮助爱好者低成本实现个性化键盘制作。
2025-05-26 22:18:05
1186
原创 AutoCAD 2026安装图文教程(超详细版)
这篇教程详细介绍了AutoCAD 2026的安装步骤,包括前期准备、安装向导操作、破解激活和首次配置。作者提供了从CAD 2014到2026各版本的下载资源链接,强调了解压文件、保存破解文件、创建安装目录等关键步骤。教程还包含首次启动时的设置建议,如迁移旧版设置、图形性能优化等。最后给出使用建议,如定期保存、学习快捷键等。全文配有详细截图,适合CAD新手和老用户参考,确保顺利完成安装并使用最新版AutoCAD。
2025-05-26 13:14:38
1807
原创 牛客网NC15869:长方体边长和计算问题解析
本文解析了牛客网NC15869题,即长方体边长和计算问题。题目要求根据长方体的三个面面积计算其总边长和。通过数学推导,边长可以通过面积公式反推得出,具体为x = √(ab/c),y = √(ac/b),z = √(b*c/a)。总边长和为4x + 4y + 4z。代码实现中,使用pow函数进行开平方计算,并确保使用浮点数除法避免整数除法错误。示例分析展示了不同输入下的计算过程,验证了算法的正确性。时间复杂度为O(1),空间复杂度为O(1),适用于大规模数据处理。总结指出,理解长方体的几何特性和面积与边长的关
2025-05-21 23:43:01
613
原创 牛客网 NC16407 题解:托米航空公司的座位安排问题
本题解介绍了如何通过深度优先搜索(DFS)解决托米航空公司的座位安排问题。题目要求在给定的n行m列的座位中选择k个座位,且选中的座位不能相邻。解题思路是从左上角开始,按行优先顺序遍历每个座位,对于每个座位,可以选择或不选择,使用二维数组记录座位状态。当选择了k个座位时,方案数加1。代码实现中,DFS函数负责递归搜索,主函数处理输入输出。算法的时间复杂度为O(2^(MN)),空间复杂度为O(MN)。优化建议包括剪枝和动态规划。注意事项包括数组大小、取模运算和状态恢复。总结指出,该题是典型的DFS回溯问题,通过
2025-05-21 22:16:52
646
原创 牛客网 NC14736 双拆分数字串 题解
本文介绍了牛客网NC14736题“双拆分数字串”的解题思路与代码实现。题目要求构造一个长度为n的数字串,使其能够以两种不同的方式拆分。对于n≤3的情况,无法构造满足条件的数字串;对于n>3的情况,根据n的奇偶性,分别使用“16400”或“1144”作为前缀,剩余位数用0填充。代码通过简单的条件判断和循环实现构造,时间复杂度为O(n),空间复杂度为O(1)。文章还探讨了构造原理、注意事项及扩展思考,强调了构造思想在解题中的重要性。
2025-05-20 23:45:23
856
原创 牛客网NC209794:使徒袭来
题目要求根据三位驾驶员的战斗力乘积 ( n ),求其和的最小值。通过算术-几何平均值不等式(AM-GM不等式),当 ( a = b = c = \sqrt[3]{n} ) 时,( a + b + c ) 取得最小值 ( 3 \times \sqrt[3]{n} )。代码使用 pow(n, 1/3.0) 计算立方根,并输出保留三位小数的结果。时间复杂度为 ( O(1) ),空间复杂度为 ( O(1) )。本题展示了数学思维在算法设计中的重要性,通过简单数学计算即可高效求解复杂优化问题。
2025-05-19 19:13:42
816
原创 牛客网 NC274692 题解:素世喝茶
牛客网 NC274692 题解:素世喝茶题目分析:给定n种红茶的美味值,其中第x种红茶是昨天喝过的,不参与比较。要求找出除第x种外,美味值最大的红茶数量。解题思路:遍历所有红茶,记录除第x种外的最大美味值。统计达到这个最大美味值的红茶数量。注意处理第x种红茶的输入,但不参与比较。代码实现:使用C++编写,通过一次遍历完成最大值的更新和计数,时间复杂度为O(n),空间复杂度为O(1)。示例分析:以输入6 4和1 1 4 5 1 4为例,最大美味值为4,达到该值的红茶有2种,输出结果为2。总
2025-05-19 18:45:57
661
原创 牛客网NC276055:三根木棒能否组成三角形问题详解(ACM中的A题)
牛客网NC276055题目要求判断三根木棒能否组成三角形。解题思路基于三角形的基本性质:任意两边之和大于第三边。通过分别将三根木棒的长度翻倍,判断修改后的长度是否满足三角形条件。代码实现中,首先读取三根木棒的长度,然后分别翻倍并检查三种情况是否满足三角形条件。只要有一种情况满足,输出"Yes",否则输出"No"。示例分析展示了不同输入情况下的判断过程。总结指出,理解三角形构成条件并枚举所有可能情况是解题的关键。
2025-05-18 23:31:38
847
原创 牛客网NC276110题解:小红的数组重排
牛客网NC276110题解:小红的数组重排,主要思路是对数组进行非降序排序,并检查两种特殊情况:三个连续相等的元素和前两个元素都是0。若不存在这些情况,排序后的数组即为所求。此方法确保相邻元素的乘积严格递增,时间复杂度为O(nlogn),空间复杂度为O(n)。通过示例分析验证了算法的正确性,展现了排序在解决数组重排问题中的有效性。
2025-05-18 23:23:14
416
原创 牛客网NC21989:牛牛学取余
牛客网NC21989题目要求计算两个整数的余数,考察了基本的模运算知识。通过C++中的%运算符,可以轻松实现这一功能。题目输入两个整数a和b,输出a除以b的余数。代码实现简单,使用cin和cout进行输入输出,并通过a % b计算余数。模运算在算法竞赛和实际编程中应用广泛,如判断奇偶、循环计数等,掌握这一基础知识点对解决复杂问题至关重要。
2025-05-18 22:43:10
609
原创 牛客网NC210769: 字母大小写转换问题解析
牛客网NC210769题目要求实现字母大小写转换。通过分析ASCII码表,大写字母A-Z的ASCII码范围为65-90,小写字母a-z为97-122,两者相差32。利用这一特性,可以通过加减32实现大小写转换。代码使用C++编写,通过循环读取输入字符,判断其大小写并进行转换后输出。虽然代码简洁高效,但存在未处理非字母字符的潜在问题,建议初始化变量或增加对非字母字符的处理。该题目考察了字符处理的基础知识,是编程中常见的字符串处理技巧。
2025-05-18 19:39:55
339
原创 牛客网NC210769:孪生素数对问题解析与实现
牛客网NC210769题目要求找出满足“三个连续奇数均为素数”的孪生素数对。通过数学分析,可以证明在所有自然数中,只有(3,5,7)这一组数满足条件,因为任何三个连续奇数中必有一个是3的倍数,除非包含3本身。因此,程序只需判断输入的整数n是否大于等于7,若满足则输出(3,5,7),否则输出0。该算法的时间复杂度和空间复杂度均为O(1),展示了数学理论在简化算法实现中的重要作用。
2025-05-18 19:20:22
536
原创 牛客网NC22004:华氏温度转摄氏温度问题详解
本文详细介绍了如何在牛客网NC22004题目中实现华氏温度到摄氏温度的转换。首先,文章解释了温度转换的公式(摄氏度 = 5/9 × (华氏度 - 32)),并强调了进行浮点除法而非整数除法的重要性。接着,提供了C++代码示例,展示了如何从输入读取华氏温度,进行转换计算,并以保留三位小数的格式输出结果。文章还讨论了代码中的关键点,如浮点精度和输出格式的控制,并提醒了边界情况的处理。最后,文章提出了扩展思考,包括其他温度单位的转换,以及这类转换在实际应用中的重要性。通过这个简单的例子,读者可以复习C++中的基本
2025-05-18 01:26:27
435
原创 牛客网NC22222:超半的数
牛客网NC22222题目要求找出数组中出现次数超过一半的数。本文介绍了最直观的暴力解法,通过遍历数组中的每个元素,统计其在整个数组中的出现次数,若某元素的出现次数超过数组长度的一半,则输出该元素。该解法的时间复杂度为O(n²),空间复杂度为O(n)。虽然暴力解法在数据规模较小时可行,但在数据规模增大时可能超时。文章还提出了两种优化思路:使用哈希表计数和摩尔投票算法,分别将时间复杂度降至O(n)和O(1)。示例解析展示了算法的执行过程,帮助理解解题思路。
2025-05-16 19:09:31
471
原创 牛客网NC22000:数字反转之-三位数
牛客网NC22000题目要求将输入的三位数进行反转输出。解题思路是通过取模和整除运算分别提取个位、十位和百位数字,然后按个位、十位、百位的顺序输出。具体实现中,使用n % 10提取个位,(n % 100) / 10提取十位,n / 100提取百位。代码示例展示了如何通过C++实现这一过程,并分析了时间复杂度和空间复杂度均为O(1)。该题目考察了基本的数位分解技巧,是编程入门的经典题型。
2025-05-16 18:07:40
491
原创 牛客网NC22157:牛牛学数列2
牛客网NC22157题目要求计算调和级数的和,即1 + 1/2 + 1/3 + ... + 1/N,并输出保留6位小数的结果。解题思路是通过循环从1到N累加每一项1/i的值,确保使用浮点数除法。代码实现中,使用double类型变量存储求和结果,并通过printf("%.6f", s)控制输出精度。调和级数在N趋近于无穷大时近似于ln(N) + γ(欧拉常数),但在本题中N最大为1000,使用double类型足以满足精度要求。
2025-05-16 00:00:04
611
原创 牛客网NC21994:分钟计算
牛客网NC21994题目要求计算两个时间点之间的分钟差。输入包括两行,每行包含两个整数,分别表示小时和分钟,第一行为起始时间,第二行为结束时间。输出为两个时间点之间的分钟数。解题思路是将时间统一转换为分钟表示,然后计算两个时间点之间的分钟差。具体实现通过将小时乘以60加上分钟,再进行相减得到结果。代码简洁高效,时间复杂度为O(1),空间复杂度为O(1)。这道题目通过简单的数学转换,帮助初学者掌握时间处理的基本技巧。
2025-05-15 23:48:27
415
原创 牛客网 NC22167: 多组数据a+b
牛客网题目NC22167要求计算多组整数a和b的和,并在a和b均为0时终止输入。解题关键在于正确处理输入终止条件。通过使用无限循环读取输入,判断是否满足终止条件,若不满足则计算并输出a+b。代码实现简洁高效,时间复杂度为O(n),空间复杂度为O(1)。该解决方案适用于处理多组数据求和问题,具有较高的实用性和效率。
2025-05-15 23:41:33
520
原创 牛客网NC22015:最大值和最小值
题目NC22015要求从三个整数中找出最大值和最小值,并按要求格式输出。解题思路是通过初始化最大值和最小值为第一个数,然后依次比较第二个和第三个数,更新最大值和最小值。代码实现简洁高效,时间复杂度为O(1),空间复杂度也为O(1)。该题展示了解决最值问题的基本方法,通过合理的初始化和条件判断,可以提高代码效率。虽然题目简单,但掌握这种基础算法对解决更复杂问题具有重要意义。
2025-05-15 23:26:39
514
原创 牛客网NC22012:判断闰年问题详解
牛客网NC22012题目要求判断一个给定年份是否为闰年。根据现代历法,闰年的判定规则为:普通年份能被4整除但不能被100整除,或者世纪年份能被400整除。解题思路是读取输入的年份,使用逻辑表达式(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)进行判断,并根据结果输出"yes"或"no"。代码实现简单,时间复杂度为O(1),空间复杂度为O(1)。该问题帮助理解闰年规则和基础逻辑运算,对日期处理有重要意义。
2025-05-15 22:58:52
439
原创 牛客网NC218480统计正负数个数
牛客网NC218480题目要求统计给定n个整数中正数和负数的个数。输入格式包括整数n和n个整数,输出格式为分别输出正数和负数的个数。解题思路简单直接:读取输入的数字,统计正负数个数,按指定格式输出。代码实现使用C++,通过循环读取并判断每个数的正负性,最后输出结果。时间复杂度为O(n),空间复杂度为O(1)。注意事项包括0不计入任何一类,输出格式需严格遵循题目要求。这是一道适合初学者的模拟题,重点在于理解题意和正确实现逻辑。
2025-05-15 22:48:05
441
原创 牛客网NC231954:斐波那契数列 (简单的数列问题)
本题要求计算斐波那契数列的第n项,斐波那契数列定义为f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)(n≥3)。采用迭代法解决,时间复杂度为O(n),空间复杂度为O(1)。代码通过初始化f1和f2为1,并根据n的值进行迭代计算,最终输出f(n)。该方法避免了递归的高时间复杂度,简洁高效。对于更大的n值,需注意整数溢出问题,可能需要使用长整型或其他方法处理。
2025-05-15 20:50:44
636
原创 牛客网刷题:NC208813求逆序数
牛客网题目NC208813要求计算给定数列的逆序数,即数列中所有逆序对的总数。逆序对指的是数列中前面的数大于后面的数。例如,数列 [2, 4, 3, 1] 的逆序数为4。解题思路是使用两层循环遍历所有可能的数对,检查是否构成逆序对,时间复杂度为O(n²)。虽然该方法适用于小规模数据(n ≤ 1000),但对于更大规模的数据,建议使用归并排序、树状数组或线段树等更高效的算法,将时间复杂度优化至O(nlogn)。代码实现中,通过读取数列长度和元素,使用两层循环统计逆序对,并输出结果。
2025-05-15 20:34:11
919
原创 牛客网:NC16422图书管理员
牛客网题目NC16422要求实现一个图书馆编码匹配系统,帮助读者找到符合需求的最小编码书籍。每本书有一个正整数编码,读者提供需求码(正整数),当书的编码以需求码结尾时,该书符合需求。算法核心包括:1)存储并排序所有图书编码;2)对每个读者查询,检查书籍编码是否符合条件;3)利用取模运算判断编码是否以需求码结尾。代码实现中,通过排序确保找到最小编码,并使用pow(10,sum)计算模数,高效判断匹配。时间复杂度为O(n·q),空间复杂度为O(n)。该算法通过取模运算和排序,有效解决了实际应用中的编码匹配问题。
2025-05-10 01:25:36
355
原创 牛客网 NC20128:数组去重问题详解
牛客网NC20128题目要求从给定数组中去除重复元素,保留每个数字的首次出现。解题思路是判断当前数字是否已在结果数组中出现过,未出现则加入,否则跳过。代码实现使用count()函数检查重复元素,时间复杂度为O(n²),空间复杂度为O(n)。优化建议是使用哈希表(如unordered_set)将查询时间降至O(1),整体算法优化至O(n)。这道题目考察了数组去重和数据结构的基础应用,对提升编程能力很有帮助。
2025-05-10 00:48:51
456
原创 牛客网:NC16491扫雷游戏
本题是典型的矩阵遍历问题,通过双重循环与边界检查实现高效统计。其代码简洁性(如直接输出数值而非存储结果矩阵)和清晰的逻辑(分支处理雷与非雷)使其成为同类问题的标准解法。实际工程中可结合方向数组、递归展开等技巧进一步优化
2025-05-09 20:40:26
717
原创 牛客网:NC21302被3整除的子序列
牛客网题目NC21302要求计算一个数字串中能被3整除的子序列数量,答案需对10^9+7取模。解题思路基于数论和动态规划,利用一个数能被3整除的充要条件是其各位数字之和能被3整除。通过设计状态数组a[i]表示模3余数为i的子序列数,并利用状态转移方程更新状态。代码通过遍历字符串中的每个字符,动态更新状态数组,最终输出模3余数为0的子序列数量。该算法时间复杂度为O(n),空间复杂度为O(1),适用于长度不超过50的字符串。
2025-05-09 19:51:22
1142
原创 牛客网:NC14517回文串
给定一个字符串(长度小于1200,仅包含小写字母),找出其中最长的回文子串的长度。回文串指的是正着读和倒着读都一样的字符串,例如"aba"、"abba"等。
2025-05-08 21:19:30
475
原创 牛客网NC277217:异或故事(位运算妙用)
来自牛客网题号NC277217的一道有趣的位运算题目。给定t组询问,每次询问都会给出一个正整数a,需要在区间[1, 10^9]中找到两个正整数b和c,使得b⊕c=a。(⊕表示按位异或)
2025-05-07 22:52:00
401
原创 【算法基础】同时满足三个模运算条件的整数查找(3和5和7)
对于这类同余问题,也可以使用中国剩余定理(Chinese Remainder Theorem)求解通解,获得一个周期性解,从而避免逐个检查。但对于本题的数据范围,直接遍历已经足够高效。这是一个典型的模运算问题,我们需要同时判断三个条件。最直观的方法就是遍历1到n的每个数,检查它是否满足所有三个条件。数学表达式:寻找所有满足以下条件的整数x(1 ≤ x ≤ n):一个正整数n(n ≤ 100000):满足条件的所有整数,每行一个。
2025-05-07 22:12:24
355
原创 牛客网NC22200题解:素数判断
这道题考察了基本的素数判断算法,通过合理的优化(只判断到sqrt(n)),我们可以在较短时间内完成判断。对于初学者来说,理解为什么只需要判断到sqrt(n)是很重要的,这体现了数学思维在算法中的重要性。
2025-05-06 00:38:08
588
原创 牛客NC23049:华华给月月准备礼物
本题是二分答案的经典应用,核心在于发现答案的单调性注意数据范围,使用long long来防止溢出二分边界的选择和结果的处理需要格外小心该算法巧妙利用了整数除法的下取整特性希望这篇分析对你有帮助,如有问题欢迎讨论!
2025-05-04 21:59:36
234
原创 牛客网刷题:游游的二进制树
理解如何在树上使用DFS遍历所有路径知道如何动态计算二进制数值利用剪枝提高效率该算法能够高效地解决这个问题,通过一次DFS遍历就能计算出所有符合条件的路径数量。
2025-05-04 21:41:53
1042
原创 牛客网刷题:数字变换的最小步数
这道题目是一个典型的搜索问题,通过DFS可以很好地解决。关键在于理解题目要求的四种操作,以及适当的剪枝优化。对于类似的数值变换问题,深搜往往是一个简单有效的解决方案,特别是当数据范围和步数限制都较小时。
2025-05-04 21:30:17
1145
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人