自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 面向 LLM 算法-硬件协同设计研究者的大语言模型权威学习资料清单(截至 2026 年 10 月)

2026年10月前构建从微观到宏观的LLM全栈认知,核心路径为:以Karpathy视频与Raschka《From-Scratch》打底,经Stanford CS336贯穿训练全流程,结合《How to Scale Your Model》建立算力直觉,精读DeepSeek-V4、Qwen3.5、gpt-oss等模型技术报告,再通过MIT6.5940与加速器论文完成量化与协同设计专项。重点聚焦原生低精度训练(如MXFP4、NVFP4)、MoE稀疏性与KVcache优化,掌握张量形状、FLOPs与带宽瓶颈的量化分

2026-10-08 13:44:23 646

原创 Codeforces Round 235 D. Roman and Numbers

摘要:该问题要求将数字n的各位重新排列,生成一个能被m整除且无前导零的新数字。解法采用状态压缩动态规划,用二进制位表示数字的使用情况。通过dp[S][j]记录状态S下模m余j的方案数,转移时枚举未使用的数字进行组合。使用vis数组避免重复计算相同数字。最终答案为dp[全选状态][0]的计数。时间复杂度为O(2^L * m),其中L是数字位数(最多18位)。

2026-07-06 15:20:48 316

原创 Codeforces Round 585 E. Marbles

摘要:本文提出了一种基于状态压缩和逆序对计算的高效算法,用于解决将颜色相同的小球排列到一起的最小步数问题。算法首先预处理各颜色间的逆序对关系,然后利用动态规划,通过状态转移计算包含不同颜色组合的最小操作步数。关键点包括:1) 利用20位二进制数表示颜色状态;2) 预处理颜色间的逆序对权重;3) 动态规划中的状态转移方程f[i|(1<<j)] = min(f[i|(1<<j)], f[i]+sum)。该算法的时间复杂度为O(2^20*20^2),适用于颜色种类不超过20的情况。

2026-07-06 11:13:07 203

原创 Codeforces Round 448 C. Square Subsets

摘要:题目给定1e5个1~70的数字,求不同取数集合使元素乘积为完全平方数的方案数。解法利用桶计数和状态压缩,将每个数分解为19个质因数的奇偶状态。通过动态规划统计满足条件的集合数,其中奇偶取法方案数为2^(k-1)。最终答案为DP结果减1除去空集,时间复杂度O(70*2^19)。

2026-07-05 17:53:20 176

原创 Luogu P2704 [NOI2001] 炮兵阵地

本文介绍了NOI2001题目"炮兵阵地"的状压DP解法。通过预处理每行合法的炮兵分布(避免相邻两格内布置),利用状态压缩存储前两行的炮兵布局信息。DP状态dp[i][S1][S2]表示第i行布局为S1、i-1行布局为S2时的最大炮兵数。转移时需确保当前行与地形无冲突,且与前两行布局不重叠。时间复杂度为O(n*4^m),适用于n≤100,m≤10的规模。最终答案在最后两行的合法状态组合中取最大值。

2026-07-05 16:11:19 200

原创 AtCoder Beginner Contest 465 E - Digit Circus

摘要:本文介绍了一种解决数字统计问题的数位DP方法。给定10^500范围内的数字,要求统计满足以下任一条件的数字数量:是3的倍数、包含数字3、由恰好3种不同数字组成。通过状态压缩和记忆化搜索,定义dp[i][j][op][mask]表示处理到第i位时的状态。最终通过累加满足单一条件的情况得到答案,时间复杂度高效。代码使用C++实现,利用位运算优化状态处理。

2026-07-05 11:47:43 407

原创 AtCoder Beginner Contest 465 D - X to Y

该算法通过将数值转换问题建模为决策树,寻找x和y的最近公共祖先(LCA)。对于每次操作,x可以选择乘k加x或除以k(取整),相当于在树中向下或向上移动。解法通过不断将较大数除以k,直到x和y相等,统计操作次数。这种方法避免了构建完整树结构,直接在数值层面进行高效计算,时间复杂度取决于x和y的比值,适用于多组测试用例。核心代码仅需10行左右,简洁高效。

2026-07-04 22:15:33 72

原创 牛客每日一题:刷题统计(Java)

本文介绍了一道基于容斥原理的刷题统计问题。题目需要计算同时完成三套题单的人数。作者将问题转化为集合运算,运用n=3时的容斥原理公式进行求解,并给出了Java实现代码。核心解法是通过输入的参数n,a,b,c,d计算出结果ans=-(n-a-b-c+d)/2,最终输出该值。文章简明扼要地阐述了问题分析、解题思路和代码实现。

2026-03-17 20:23:33 57

原创 AtCoder Beginner Contest 449:A+B+C+D+E

本文摘要:文章包含5道编程题的题解,涵盖几何、模拟、字符串处理、数学计算和数列操作等知识点。A题要求根据直径计算圆面积并控制精度;B题模拟巧克力分解过程;C题通过滑动窗口统计特定条件的字母对;D题利用数学规律计算坐标系中黑色点数量;E题处理大规模数列查询,使用有序集合优化。每道题都提供了清晰的解题思路和实现代码,涉及精度控制、分类讨论、滑动窗口、数学规律分析等技巧,适合算法学习者参考。

2026-03-16 22:58:39 1251 2

原创 牛客每日一题:清楚姐姐买竹鼠(Java)

摘要:本文讨论购买竹鼠的最优方案问题。题目要求购买x只竹鼠,有两种购买方式:单只a元或三只b元。解题思路是比较两种方式的性价比:当3a≤b时全部单买更划算,否则优先按三只组合购买,剩余部分再比较单买和组合买的价格。最后给出了相应的Java实现代码,通过计算总价的最小值来解决问题。

2026-03-14 09:49:40 57

原创 牛客每日一题:显生之宙(Java)

摘要:题目要求通过n-1次操作使数列最终剩下一个最小元素。解题关键在于:1) 先处理较小元素以减少其对其他数的影响;2) 保留最大元素以最小化最终结果。解法步骤:将数组排序后遍历处理,负数累加求和,正数单独处理。最终输出排序后的最大元素即为最优解。时间复杂度主要由排序决定,适用于常规输入规模。

2026-03-13 12:25:56 459

原创 牛客每日一题:食物链计数(Java)

摘要:本文介绍了一个基于拓扑排序的食物链计数问题解法。给定有向图,需要计算从无入度起点到无出度终点的不同路径数量。核心思路是使用队列进行拓扑排序,通过维护入度数组和路径计数数组来追踪路径数。实现时需要注意单独的点不构成有效路径。Java代码通过邻接表存储图结构,利用队列处理拓扑排序,最终累加符合条件的终点路径数得到结果。

2026-03-12 11:12:17 596

原创 AtCoder Beginner Contest 448:A+B+C+D+E

本文摘要:本文包含5道算法题的题意分析、解题思路和正解代码。A题要求遍历数组并根据条件更新变量和输出;B题通过贪心算法最大化辣椒使用量;C题利用map维护球的最小数字并处理删除操作;D题使用DFS和map判断树路径中是否存在重复点权;E题通过快速幂处理大数运算和模数问题。每道题都给出了详细思路和高效解法,涵盖贪心、数据结构、图论和数论等算法知识点。

2026-03-08 13:28:59 1227

原创 牛客每日一题:连分数

本文介绍了将分数p/q转化为连分数形式的算法。通过观察发现转化过程是一个迭代过程:提取整数部分a后,将剩余部分转化为1/(c/b)并递归处理。文章提供了C++实现代码,使用递归函数work()处理分数转换,当分子能整除分母时直接返回结果,否则处理整数部分并递归剩余部分。主函数solve()读取输入并输出转换结果。该算法简洁高效地解决了分数到连分数的转换问题。

2026-03-08 12:07:28 70

原创 牛客每日一题:Rinne Loves Edges

摘要:本文讨论了一个关于树结构的最小边权删除问题。题目要求在给定树中删除边,使得除特定节点S外所有度为1的节点都无法到达S,并求最小删除边权和。解法以S为根建立树,通过深度优先搜索回溯处理,比较子树断开边权和当前边权取较小值。该算法时间复杂度为O(n),给出了对应的C++实现代码,能高效解决问题。

2026-03-07 14:50:25 331

原创 牛客每日一题:走迷宫

摘要:本文介绍了牛客每日一题中的走迷宫问题,要求在一个n*m的迷宫中从起点到终点的最小步数。使用BFS算法进行搜索,通过队列实现路径探索,并记录访问状态避免重复。代码包含边界检查、障碍物判断和步数统计,最终输出最短路径或-1(无法到达)。该解法时间复杂度为O(nm),是典型的广度优先搜索应用。

2026-03-05 10:13:11 334

原创 牛客每日一题:多米诺骨牌

摘要:本文探讨了多米诺骨牌问题的解法。题目给定n个骨牌的位置和高度,推倒一个骨牌会引发连锁反应覆盖特定区间。通过将骨牌按位置排序,计算每个推倒区间的覆盖范围,并选择前m个最大区间来最大化推倒骨牌数量。算法时间复杂度为O(nlogn),适用于大规模数据。

2026-03-04 15:49:14 208

原创 牛客每日一题:子段和

摘要:本文讨论了如何判断一个数列能否通过重新排序,使得所有长度≤2的子段和都不为0。首先排除含0元素的数列,然后对数列排序。若存在相邻元素和为0,则尝试与后续不同元素交换。若能消除所有相邻和为0的情况则输出"YES",否则输出"NO"。算法时间复杂度主要由排序决定,为O(nlogn)。

2026-03-03 16:10:09 181

原创 Codeforces Round 1083 (Div. 2) A+B

本文包含两个算法问题的分析与解答。A题"SimonsandMakingItBeautiful"要求通过最多一次交换操作,使排列中的"丑点"数量最小化。解题思路是枚举所有可能的交换对,并比较交换前后的丑点数量。B题"SimonsandCakesforSuccess"要求找到最小的k使得n是k^n的因子。解法是将n分解质因数,其质因数的乘积即为答案。两题均提供了完整的C++实现代码,其中A题采用枚举优化,B题使用素数筛预处理质数来提高效率。

2026-02-27 15:59:35 610

原创 Codeforces Round 1083 (Div. 2) C. Simons and Posting Blogs

题目要求处理n个序列,通过特定操作构造字典序最小的结果序列m。关键思路是:1) 翻转每个输入序列;2) 使用优先队列按字典序处理序列;3) 维护已存在的元素映射;4) 动态更新剩余序列。算法复杂度为O(nL logn),通过优先队列实现贪心选择,确保每次处理能产生当前最优解。最终输出不重复且字典序最小的序列。

2026-02-27 15:28:51 1123

原创 Educational Codeforces Round 187 (Rated for Div. 2) A+B

本文包含两个算法问题及解答: "Towers of Boxes":给定n个箱子(重量m,承重d),求最少能堆叠的塔数。解法是计算每塔底层最多能承受的箱子数,通过n/(d/m+1)取上整得到答案。 "Beautiful Numbers":求使数字各位和F(x)变成个位数的最小操作次数。解法是将数字各位从大到小排序,依次将最大位变为0,直到总和小于10(最高位不能为0)。时间复杂度可处理1e18范围的输入。

2026-02-26 13:13:15 520

原创 Educational Codeforces Round 187 (Rated for Div. 2) C. Test Generator

摘要:题目要求构造满足两个条件的序列:元素和等于s,且每个元素与m的位与运算结果等于其本身。解题思路是将m二进制拆分,转化为选择若干2的幂次使和为s,并最小化序列长度。采用二分法枚举物品个数的最大值,通过check函数验证可行性。最终输出满足条件的最小序列长度n。

2026-02-26 12:36:32 705

原创 luoguP2534 [AHOI2012] 铁盘整理

本文提出使用A算法解决铁盘排序问题,要求通过最少的翻转前缀操作将n个铁盘从小到大排序。关键思路是设计估计函数h(x),通过离散化处理后,计算相邻元素差值不为1的数量作为启发式评估。文章展示了算法实现过程,包括离散化预处理、状态评估和A搜索框架。实验结果表明该方法能有效找到最优解,样例分析验证了翻转操作的合理性。算法通过逐步增加搜索深度k,在满足评估条件时终止并输出最优步数。

2026-02-25 16:51:15 111

原创 luoguP1379 八数码难题

摘要:本文介绍了一个3x3数字拼图游戏的最短路径求解算法。题目要求将初始棋盘通过移动0格(与相邻格子交换)转变为标准棋盘(1-8按顺序排列),求出最少步数。作者采用了A*算法,通过设计启发式函数(当前步数+与目标状态差异的格子数)来控制搜索深度。代码实现了双向搜索和剪枝优化,当找到目标状态时立即返回当前步数。该算法有效解决了传统BFS/DFS在搜索空间过大时效率低下的问题。

2026-02-25 15:44:00 80

原创 Codeforces Round 1082 (Div. 2) C1+C2 题解

摘要:本文解析了两道关于序列操作的题目。C1题要求通过逆向操作(用栈从后往前消除连续元素)找出最短初始序列长度,最终栈的大小即为答案。C2题在C1基础上扩展,需要计算所有子序列的最短初始序列长度之和,通过预处理每个元素被消除的位置,将贡献转化为(i-pre[i])*(n-i+1)的累加。两题均采用栈结构逆向处理,C2额外利用预处理优化计算。核心思路都是通过逆向操作分析元素间的消除关系。

2026-02-24 20:17:04 679 3

原创 luoguP2419 [USACO08JAN] Cow Contest S

本文介绍了两种算法解决奶牛排名问题:1)拓扑排序法:构建有向图后通过拓扑遍历确定每个节点能到达和被到达的节点数,当两者之和为n-1时即可确定排名,时间复杂度O(n^2);2)Floyd算法:通过修改更新规则计算各节点间的可达性,满足与其他所有节点存在联系即可确定排名,时间复杂度O(n^3)。两种方法在n≤100时均可通过,核心思想都是通过可达性分析确定排名可确定的奶牛数量。

2026-02-23 20:30:08 258

原创 C++入门基础(6):stl库入门

本文介绍了C++ STL库中四种常用容器和函数:vector(动态数组)、map(键值对)、set(集合)和sort(排序)。详细说明了它们的基本操作,如vector的push_back/pop_back、map的insert/find、set的insert/erase以及sort对数组和容器的排序功能。特别展示了sort如何通过自定义比较函数实现结构体排序。文章通过代码示例演示了各容器的使用方法,为C++初学者提供了实用的STL入门指南。

2026-02-22 17:22:20 349

原创 C++入门基础(5):类与对象

本文介绍了C++面向对象编程的核心概念。主要内容包括:类的定义与使用,通过Vehicle类示例展示成员变量和成员函数的声明与实现;访问控制机制(public、protected、private)及其封装特性;构造函数和析构函数的作用与实现;继承的三种方式(公有、保护、私有)及子类构造顺序;以及虚基类解决多继承中的菱形继承问题。文章通过具体代码示例,系统地讲解了从基础类定义到复杂继承关系的面向对象编程核心知识点。

2026-02-22 15:15:47 1488

原创 C++入门基础(4):结构体

本文介绍了C++结构体的基础用法和运算符重载。首先讲解了如何定义结构体类型及创建变量,通过示例展示了结构体成员的访问方式。然后重点阐述了运算符重载的方法,以加法运算符和输出运算符为例,演示了如何为自定义结构体类型实现运算符功能,使结构体使用更加便捷。文章通过具体代码示例说明了结构体变量定义、成员访问和运算符重载的实现过程。

2026-02-21 16:10:02 52

原创 C++入门基础(3):函数

本文介绍了C++函数的基本概念与进阶用法。首先解释了函数的定义方式,包括返回值类型、参数传递和void函数。重点讲解了递归函数的特点(递归出口和递归公式),并以斐波那契数列为例说明递归实现。接着介绍了函数重载的概念,展示如何通过参数类型区分同名函数。最后引入函数模板,说明如何使用模板简化对不同数据类型的相同操作。文章涵盖了从基础函数定义到高级模板编程的核心知识点。

2026-02-21 15:51:14 352

原创 C++入门基础(2):基础算法

本文介绍了五种基础排序算法(冒泡、选择、插入、快速、归并)和二分查找算法。冒泡排序通过相邻元素比较交换将最大值"冒"到末尾;选择排序每次选择剩余元素中的最小值;插入排序将元素逐个插入有序序列。快速排序和归并排序采用分治思想,时间复杂度更优(O(nlogn)),其中归并排序稳定性更好。二分查找针对有序数组,通过不断折半缩小查找范围。文章提供了各算法的核心代码实现,并建议实际应用中优先使用C++的sort函数。

2026-02-20 16:04:26 1562

原创 luoguP1038 神经网络

神经网络拓扑排序问题 本文实现了一个神经网络拓扑排序算法,用于计算神经网络中各层的激活状态。主要思路如下: 构建神经网络结构:输入层、中间层和输出层,层间通过带权连接传播信号 使用拓扑排序处理神经元激活状态,初始时输入层神经元活跃 活跃神经元根据连接权重向下一层传播信号 最终输出激活状态大于0的输出层神经元 算法采用队列实现拓扑排序,时间复杂度为O(n),能够高效处理神经网络信号传播问题。

2026-02-20 00:37:36 64

原创 C++入门基础(1):基础语法

本文是作者在学习C++之后的一些心得,涵盖了基础语法,基础算法,函数,结构体,类与对象,stl函数等知识。

2026-02-19 14:38:54 874

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除