logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

P1002 [NOIP 2002 普及组] 过河卒 c++题解

题目摘要:NOIP2002普及组"过河卒"问题 题目要求计算棋盘上卒从起点(0,0)到终点(n,m)的路径数,卒只能向右或向下移动,且需避开马的控制点(包括马的位置及其8个跳跃点)。 方法对比: 动态规划(最优解): 使用二维数组dp记录路径数 状态转移:dp[i][j] = dp[i-1][j] + dp[i][j-1] 复杂度:O(nm),空间O(nm) 记忆化搜索: 递归

#c++#代理模式#开发语言
洛谷P3717 [AHOI2017初中组] cover 题解 c++

该题解介绍了洛谷P3717 [AHOI2017初中组] cover问题的C++解法。题目要求计算在n×n网格中被m个探测器覆盖的区域,每个探测器能覆盖半径为r的圆形范围。题解使用二维数组标记被覆盖的点,通过遍历每个探测器周围的正方形区域,计算欧氏距离判断是否在覆盖范围内。最后统计被标记的点的数量。代码使用了模拟和枚举的方法,时间复杂度为O(m*r²)。适合入门级选手练习网格覆盖和距离计算问题。

#算法#数据结构
B4016 树的直径 c++题解

当存储边(u,v)时,需要在u的邻接表中添加v,同时在v的邻接表中添加u,这样才能完整表示无向边。步骤2‌:从 begin 出发再次DFS,找到最远节点 end,此时 begin 到 end 的路径即为直径。代码通过两次DFS求解树的直径,每次DFS均完整遍历所有节点(共 n 个),时间复杂度为 ‌O(n)‌。步骤1‌:从任意节点(如节点1)出发,通过DFS找到最远节点 begin(必为直径的一个

#c++#深度优先#开发语言
P1014 [NOIP 1999 普及组] Cantor 表 c++题解

本文介绍了NOIP 1999普及组题目"Cantor表"的解题方法。题目要求按照Z字形顺序输出有理数表中的第N项。解题核心是采用分组模拟法:首先确定目标数所在的斜行k,然后根据斜行奇偶性决定移动方向(奇数行向左上,偶数行向右下),最终通过数学计算确定分子分母。算法时间复杂度为O(√N),适用于大范围数据。文章提供了完整的C++代码实现,并附有测试样例和相关题目推荐。该解法通过数

#c++
B4016 树的直径 c++题解

当存储边(u,v)时,需要在u的邻接表中添加v,同时在v的邻接表中添加u,这样才能完整表示无向边。步骤2‌:从 begin 出发再次DFS,找到最远节点 end,此时 begin 到 end 的路径即为直径。代码通过两次DFS求解树的直径,每次DFS均完整遍历所有节点(共 n 个),时间复杂度为 ‌O(n)‌。步骤1‌:从任意节点(如节点1)出发,通过DFS找到最远节点 begin(必为直径的一个

#c++#深度优先#开发语言
P1014 [NOIP 1999 普及组] Cantor 表 c++题解

本文介绍了NOIP 1999普及组题目"Cantor表"的解题方法。题目要求按照Z字形顺序输出有理数表中的第N项。解题核心是采用分组模拟法:首先确定目标数所在的斜行k,然后根据斜行奇偶性决定移动方向(奇数行向左上,偶数行向右下),最终通过数学计算确定分子分母。算法时间复杂度为O(√N),适用于大范围数据。文章提供了完整的C++代码实现,并附有测试样例和相关题目推荐。该解法通过数

#c++
到底了