自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闻缺陷则喜何志丹

本人拙作《闻缺陷则喜》欢迎指教,可在优快云下载

  • 博客(2287)
  • 资源 (86)
  • 收藏
  • 关注

原创 【二分查找 图论】P10206 [JOI 2024 Final] 建设工程 2|普及+

本文研究了JOI 2024 Final中的"建设工程2"问题,需要计算在铁路网络中新增线路后满足国王时间要求的方案数。主要思路是: 首先检查原始网络中S到T的最短路径是否已满足K分钟要求,若满足则直接返回所有可能的线路组合数N*(N-1)/2。 否则,利用图论中的最短路径算法预处理: 计算从S出发到各点的最短距离d1 计算从各点到T的最短距离d2 对于每对可能的站点(u,v),通过二分查找统计满足d1[u]+L+d2[v]≤K或d1[v]+L+d2[u]≤K的组合数。 最终结果需去重处理

2026-01-05 07:00:00 1682 60

原创 【C# CAD三维建模 .Net API】三维建模基础一

本文介绍了使用计算几何技术创建复杂三维实体的过程。通过分步构建和布尔运算,演示了如何从基础长方体出发,依次进行减法操作(去除小长方体和圆柱体)、加法操作(合并圆柱环)以及特殊形状(梯形)的添加。每个步骤都配有相应的C++代码实现,包括实体创建、拉伸操作和布尔运算等关键函数调用。文中还强调了算法实现中的注意事项,如切点选择和方向控制。最终生成的3D模型展示了计算几何在机械设计中的应用价值。

2026-01-01 20:21:59 1976 73

原创 计算几何汇总

这是一个关于C++算法与数据结构中计算几何主题的博客目录页面,包含了基础知识、力扣题目和洛谷题目的分类整理。主要结构1. 基础知识部分三角函数和角公式、矢量旋转线段求交点算法点到矢量投影三角形外心计算跨立实验线段间距离计算仿射变换与齐次坐标平面凸包等基础计算几何概念2. 力扣题目(LeetCode)包含8个计算几何相关的题目,每个都有相应的难度分数(如1681、1708等)3. 洛谷题目包含13个题目,覆盖从普及到普及+的不同难度等级

2025-12-30 07:00:00 307 4

原创 【前缀和】P9043 [PA 2021] Zbalansowane słowa|普及+

本文介绍了如何统计字符串中"好的子串"数量,即所有字符出现次数相同的子串。核心解法是使用前缀和技巧,通过维护两个数组ab和ac来记录字符数量差值,利用哈希表统计满足条件的子串对。此外,还需单独处理只有单一或两种字符的特殊情况。代码部分展示了前缀和实现及输入输出优化,适用于处理大规模数据(长度≤3×10^5)。

2026-01-07 17:00:00 899 1

原创 【动态规划 前缀和 树状数组 离散化】P9049 [PA 2021] Mopadulo|普及+

本文探讨了使用动态规划、前缀和和树状数组解决区间划分问题的算法。给定序列a,要求将a划分为若干区间,使每个区间和模1e9+7为偶数的方案数。通过维护前缀和preSum[i]并利用其奇偶性性质,将O(n²)的暴力DP优化为O(nlogn)的树状数组解法。具体实现中,使用两个树状数组分别记录前缀和为奇数和偶数的状态,通过离散化处理避免动态开点。最终返回dp[n]即为所求方案数,时间复杂度O(nlogn),空间复杂度O(n)。

2026-01-07 07:00:00 782 4

原创 【前缀和 期望】P7875 「SWTR-7」IOI 2077|普及+

摘要 本文介绍了题目「SWTR-7」IOI 2077的解法,主要涉及期望值的计算。题目给定n个候选参赛者,按能力值递增排序,q种参赛情况,每种情况包含区间[l,r]和主角编号k。要求计算在每种情况下,主角选择队友的能力值之和的期望值,并对结果取模后求异或和。 解法思路 问题分析:主角选择队友时,必须保证自己的能力值是中位数。设区间长度为s,m在[0, ⌊(s-1)/2⌋]中随机选择,并等概率选择2m个队友。 概率计算:对于左区间(能力值小于主角)和右区间(能力值大于主角),分别计算每个元素被选中的概率。推导

2026-01-06 17:00:00 1389 1

原创 【前缀和】3756. 连接非零数字并乘以其数字和 II|1968

本文介绍了一种基于前缀和的高效算法,用于解决字符串数字子串的特殊计算问题。给定数字字符串和多个查询区间,算法需要提取子串中的非零数字,连接成整数x并计算其数字和sum,最终返回x*sum对1e9+7取模的结果。 核心思路是使用三种前缀和数组: cntPreSum记录非零字符数量 xPreSum记录前缀连接的非零数字值 sumPreSum记录前缀数字和 通过预处理这些前缀和数组,可以在O(1)时间内计算任意子串的结果。算法使用模数类C1097Int处理大数运算,确保正确性。测试用例验证了算法在各种情况下的正确

2026-01-06 07:00:00 1391 3

原创 【线性求逆元 前后缀分解 期望 前缀和】P6862 [RC-03] 随机树生成器|本文涉及知识点|普及+

小 R 有一个随机树生成器,其工作原理如下:- 输入 $n$,则对于每个 $1<i\le n$,随机选择一个 $[1,i)$ 中的节点作为其父亲。返回这棵树。给定 $n,k$,小 R 想知道可能生成的所有 $n$ 个点的树中,$k$ 号点的度数和。由于答案可能很大,请输出答案模 $10^9+9$ 的值。

2026-01-05 17:00:00 579 1

原创 【前缀和 动态规划】P8675 [蓝桥杯 2018 国 B] 搭积木|普及+

小明对搭积木非常感兴趣。他的积木都是同样大小的正立方体。在搭积木时,小明选取 $m$ 块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第 $0$ 层。随后,小明可以在上面摆放第 $1$ 层,第 $2$ 层,……,最多摆放至第 $n$ 层。摆放积木必须遵循三条规则:规则 $1$:每块积木必须紧挨着放置在某一块积木的正上方,与其下一层的积木对齐;规则 $2$:同一层中的积木必须连续摆放,中间不能留有空隙;规则 $3$:小明不喜欢的位置不能放置积木。其中,小明不喜欢的位置都被

2026-01-04 17:00:00 698 1

原创 【前后缀分解 前缀和】P10274 [USACO24OPEN] Logical Moos B|普及+

题目分析 本题要求处理一个由布尔值和逻辑运算符组成的表达式,并通过前后缀分解技术高效处理大量查询。关键点在于: 表达式结构:表达式由交替的布尔值(true/false)和逻辑运算符(and/or)组成,运算符优先级遵循and高于or。 查询处理:对于每个查询,需要判断将指定区间的子表达式替换为true或false后,整个表达式能否得到目标布尔值。 优化思路:使用前后缀分解技术预处理表达式,将表达式按or运算符分割成多个段,记录每段的真值情况。通过二分查找快速定位查询区间影响的段范围。 算法思路 预处理:收集

2026-01-04 07:00:00 922 2

原创 【二分 寻找尾端】P7971 [KSN2021] Colouring Balls|普及+

有 $N$ 个小球,从 $1$ 到 $N$ 编号。你每次可以询问编号在 $[l,r]$ 之间的小球有几种不同的颜色,你需要求出每个小球的颜色。由于你并不知道具体颜色是什么,你只要将同种颜色用同一个数字表示即可。

2026-01-03 20:42:30 991 1

原创 【二分查找】P9822 [ICPC2020 Shanghai R] Walker【有误差】|普及

作为著名的旅行者,Prof. Pang 的研究兴趣是在一生中到尽可能多的地方旅游。在一条 $[0,n]$ 的线段上有两名旅行者,第一名在位置 $p_1$ 以 $v_1$ (每秒钟可以走 $v_1$ 单位的距离)的速度开始运动,第二名在位置 $p_2$ 以 $v_2$ 的速度开始运动。从他们分别的起始点出发,旅行者可以在线段上移动,但不可以走出线段。他们可以随时改变自己的方向。请帮助 Prof. Pang 计算至少需要多少时间,线段上的每个位置都至少被一名旅行者经过。

2026-01-03 20:38:41 692

原创 【二分查找】P9029 [COCI 2022/2023 #1] Čokolade|普及+

巧克力工厂里有 $n$ 块不同的巧克力,其中第 $i$ 块的价格为 $c_i$。Lana 和 Fran 想买 $m$ 块巧克力。Fran 有一个消费方案:•如果巧克力价格低于 $k$ 元,这块巧克力的费用将全部由 Lana 支付。•否则,Lana 将支付 $k$ 元,而 Fran 将支付其余的部分,即 $c_i−k$ 元。Lana 对 Fran 的方案不满意,想要报复 Fran。设 $l$ 为 Lana 需要支付的金额,$f$ 为 Fran 需要支付的金额。Lana 将选择使 $l−f$ 的

2026-01-02 17:00:00 1034 2

原创 亲士CAD工具箱使用方法、下载地址、需求收集

摘要:亲士CAD工具箱现支持CAD2013及以上版本(不兼容2012及以下),现公开征集功能需求。开发者邀请用户通过评论提交对二维/三维功能的改进建议或新增需求,以优化工具箱功能。

2026-01-02 11:37:25 127 2

原创 【状态压缩动态规划 二分图】P4329 [COCI 2006/2007 #1] Bond|普及+

每个人都知道特工 007,著名的邦德(詹姆斯·邦德)。一个鲜为人知的事实是,他实际上并没有亲自完成大多数任务;这些任务是由他的表亲,吉米·邦德们完成的。邦德(詹姆斯·邦德)已经厌倦了每次接到新任务时都要分配任务给吉米·邦德们,所以他请求你帮助他。每个月,邦德(詹姆斯·邦德)都会收到一份任务清单。利用他从过去任务中获得的详细情报,对于每个任务和每个吉米·邦德,他计算出该吉米·邦德成功完成该任务的概率。你的程序应该处理这些数据,并找到一种安排,使得所有任务成功完成的概率最大化。注意:所有任务成功完成的概率等于单

2026-01-02 07:00:00 578 1

原创 【二分查找】P10091 [ROIR 2022 Day 2] 分数排序|普及+

有两个由 $n$ 个不同整数组成的序列 $A = [a_1, a_2, \dots , a_n]$ 和 $B = [b_1, b_2, \dots , b_n]$。将它们组合成 $n^2$ 个分数,形式为 $\frac{a_i}{b_j}$,并将每个分数约分后按递增顺序排序。给定一个数字 $q$ 和 $q$ 个整数 $c_1, c_2, \dots , c_q$。对于每个 $c_i$,请输出上面所说的 $n^2$ 个分数中第 $c_i$ 小的分数。

2026-01-01 20:28:29 719 5

原创 【二分查找 寻找首端】P9124 [USACO23FEB] Bakery SP|普及+

Bessie 开了一家面包店!在她的面包店里,Bessie 有一个烤箱,可以在 $t_C$ 的时间内生产一块饼干或在 $t_M$ 单位时间内生产一块松糕。$(1 \le t_C,t_M \le 10^9)$。由于空间限制,Bessie 一次只能生产一种糕点,所以要生产 $A$ 块饼干和 $B$ 块松饼,需要 $A\cdot t_C+B\cdot t_M$ 单位的时间。Bessie的 $N (1\le N\le 100)$ 朋友都想一个一个地去面包店。第 $i$ 个朋友一进门就会点 $a_i(1 \

2025-12-31 17:00:00 1516 1

原创 【二分查找 树状数组 离散化】P9176 [COCI 2022/2023 #4] Vrsta|普及+

Domagoj 最喜欢的课是体育课。每节体育课都以热身运动开始。体育老师有一个有趣的方法来选择带领其他同学做热身运动的学生。学生们按身高从低到高的顺序站成一排,老师会选择站在队伍中间的学生。如果有两个学生在中间,他将选择较矮的那个。例如:如果学生的身高为 $1, 3, 5, 7, 11$,身高为 $5$ 的学生将带领其他同学做热身运动。Domagoj 记不住他同学的身高。幸运的是,站在他旁边的 Lovro 十分擅长估计他人的身高。他给了 Domagoj $n$ 条信息:「有 $a_i$ 个身高为 $v_

2025-12-31 07:00:00 1068

原创 【逆序思考 堆 二分查找 前缀和】3771. 探索地牢的得分|1981

给你一个 正整数 hp 和两个 正整数 数组 damage 和 requirement,数组下标从 1 开始。有一个地牢,里面有 n 个陷阱房间,编号从 1 到 n。进入编号为 i 的房间会使你的生命值减少 damage[i]。减少后,如果你的剩余生命值至少为 requirement[i],你可以从该房间获得 1 分。定义 score(j) 为从房间 j 开始,依次进入房间 j, j + 1, ..., n 时可以获得的总分。返回整数 score(1) + score(2) + ... + sco

2025-12-30 16:45:00 743 2

原创 【计算几何 随机化】P4703 偷上网|普及+

本文研究了P4703偷上网问题,涉及计算几何和随机化算法。题目要求在n个无线信号屏蔽器覆盖的l×l正方形区域内找到一个未被覆盖的位置。当n≤3时,通过几何分析可确定四个顶点或边中点至少有一个不在覆盖范围内;当n>3时,采用随机化方法在区域内采样1000次,统计概率确保找到解。代码实现了几何距离计算和随机点验证,输出满足条件的坐标或"GG"表示无解。该算法结合几何特性和概率方法,高效解决了覆盖检测问题。

2025-12-29 17:00:00 625

原创 【2025博客之星】求职总结

摘要:本文记录了一位技术架构师的求职经历与心得。作者详细描述了8-11月的求职过程,包括等待美联储降息、调整薪资期望、线上线下投递简历及面试经历。总结了私企面试特点:小公司机会更多,同乡关系有助获得面试;技术面试偏重主流技能而非小众技巧;架构师与老板沟通相对顺畅。文章还分享了关于大公司背锅文化、技术学习方向的思考,以及未来计划专注CAD开发与计算几何学习。最后提出求职建议:可先在家测试薪资期望,再到昆山或广州集中求职。

2025-12-29 07:00:00 1235 48

原创 【前缀和 二分查找】P9186 [USACO23OPEN] Milk Sum S|普及+

本文摘要: 题目要求处理奶牛产奶量变化对最优挤奶顺序的影响。给定N头奶牛的产奶量a_i,初始最优顺序T是按升序排列后计算∑(i+1)*b[i]。对于Q个查询,每次临时修改a_i为j,需要快速计算新的T值。 核心解法: 将产奶量排序得到b数组,计算初始T值 使用前缀和数组优化计算 对于每个查询: 从排序数组中删除原值a_i 插入新值j到合适位置 计算新T值,考虑位置变化对总和的影响 使用二分查找确定插入位置,时间复杂度O(nlogn) 输入输出样例验证了算法的正确性,适用于大规模数据(N,Q≤1.5×10^5

2025-12-28 17:53:24 653 1

原创 【计算几何 化环为链】P14165 [ICPC 2022 Nanjing R] 清空水箱|普及+

本文研究了ICPC 2022南京站竞赛题目"清空水箱"的解法。该问题要求在多边形水箱上安装最少数量的出水阀门,使得打开所有阀门后水箱中的水能完全流出。通过计算几何分析,发现只需在满足特定条件的顶点处安装阀门即可。关键点在于:1) 处理相邻顶点共线的情况;2) 使用化环为链的方法简化多边形处理;3) 通过叉积判断顶点是否需要阀门。最终解法时间复杂度为O(n),适用于顶点数n≤2000的情况。样例测试验证了算法的正确性,如样例1需2个阀门,样例2仅需1个。

2025-12-28 17:51:54 1039

原创 【二分查找 三维差分】P8666 [蓝桥杯 2018 省 A] 三体攻击|普及+

三体人将对地球发起攻击。为了抵御攻击,地球人派出了 $A\times B\times C$ 艘战舰,在太空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体。其中,第 $i$ 层第 $j$ 行第 $k$ 列的战舰(记为战舰 $(i, j, k)$)的生命值为 $d(i, j, k)$。三体人将会对地球发起 $m$ 轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。具体地,第 $t$ 轮攻击用 $7$ 个参数 $la_t, ra_t, lb_t, rb_t, lc_t, rc_t

2025-12-27 17:00:00 698 2

原创 【计算几何 最短路 动态规划】P1354 房间最短路问题

本文探讨了房间最短路问题的动态规划解法。题目要求在包含多堵墙的房间内,从入口(0,5)到出口(10,5)寻找最短路径。解法采用动态规划思路,将各墙上的缺口端点映射为整数状态,定义dp[x][y]表示到达第x堵墙y坐标的最短距离。状态转移通过枚举前驱状态和缺口间的可行路径完成,时间复杂度为O(NM²)。同时分析了计算几何方法,证明直线路径最优性,并给出交点判断条件。最终实现采用邻接表建图后求最短路,时间复杂度优化至O(N³)。

2025-12-27 07:00:00 956 1

原创 【离线查询 前缀和 二分查找 栈】P12271 [蓝桥杯 2024 国 Python B] 括号与字母|普及+

给定一个仅包含小写字母和括号的字符串 $S$,保证括号可以两两匹配。给出 $Q$ 组询问,每组询问给出一个小写字母 $c_i$ 和一个数 $x_i$,询问 $S$ 中有多少对匹配的括号之间有不少于 $x_i$ 个 $c_i$。

2025-12-26 17:00:00 1566 1

原创 【计算几何】平面凸包

本文系统介绍了凸包算法,包括基础性质、Jarvis March礼品包装算法、Graham Scan扫描线算法和单调链算法。凸包是包含给定点集的最小凸多边形,具有极角单调性等关键特性。Jarvis March时间复杂度O(hn),Graham Scan为O(nlogn)。单调链算法通过上下凸壳合并实现,避免了三角函数计算。文章详细论证了各算法的正确性,并提供了相关几何性质的数学证明。这些算法在计算几何中具有重要应用,适用于处理点集凸包问题。

2025-12-26 07:00:00 1002

原创 【二分查找】P9982 [USACO23DEC] Haybale Distribution G|普及+

本文研究了Farmer John在数轴上的谷仓间分配干草堆的最优运输问题。给定N个谷仓的位置和Q组运输成本参数(a_i,b_i),需要为每组参数找到使总浪费最小的中转点y。通过分析发现,目标函数f(y)关于y具有凸性,其差分函数g(y)单调递增,因此可以采用二分查找法快速定位最优解。预处理谷仓位置的排序和前缀和后,算法的时间复杂度为O(QlogN),适用于大规模数据。关键点在于将问题转化为寻找差分函数的零点,并利用二分法高效求解。

2025-12-25 17:00:00 876 2

原创 【组合数学 动态规划】P6870 [COCI2019-2020#5] Zapina|普及+

本文摘要:题目要求计算将n道不同题目分配给n个不同人时,至少一人分配到恰好i道题(使其开心)的方案数。采用动态规划方法,定义dp[i][j]表示前i人分配j道题且无人开心的方案数。通过组合数学计算转移方程,最终结果为总分配方案数n^n减去所有人都不开心的方案数dp[n][n]。时间复杂度O(n^3),适用于n≤350的数据规模。

2025-12-25 07:00:00 2984 50

原创 【C++组合数学】P8106 [Cnoi2021] 数学练习|普及+

本文研究了将集合U={1,2,...,n}划分为两个非空子集S和T的方案数,要求子集大小不属于该子集。通过组合数学分析得出,当n≥3时,方案数为2^(n-2)减去当n为偶数时的特殊情形。采用模数998244353处理大数,给出了核心算法实现和测试用例。该问题展示了组合数学在集合划分中的应用,强调了对边界条件的处理。

2025-12-24 17:00:00 1541 1

原创 【回溯 错误定理】P1034 [NOIP 2002 提高组] 矩形覆盖|普及+

本文讨论了NOIP 2002提高组题目"矩形覆盖"的解法。题目要求在平面上用k个轴对齐的矩形覆盖n个点,求最小面积和。解题思路采用回溯算法,通过枚举每个点分配到不同矩形的情况,计算面积并取最小值。关键点包括:1) 分离定理分析矩形重叠条件;2) 回溯过程中及时剪枝优化;3) 动态维护矩形边界和面积计算。代码实现包含矩形类定义、重叠判断和回溯核心逻辑,适用于n≤50且k≤4的数据规模。该解法通过系统枚举所有可能情况确保找到最优解。

2025-12-24 07:00:00 625

原创 【组合数学 数论】P8763 [蓝桥杯 2021 国 ABC] 异或变换|普及+

本文研究01串的异或变换问题,通过组合数学和杨辉三角性质分析变换规律。关键发现是第t次变换后的每个字符等于原始串中对应位置及其前t个位置的组合数模2异或结果。利用组合数奇偶性判断(通过质因数2的数量比较)来优化计算,避免直接计算大数组合。给出核心代码实现,时间复杂度O(n^2),适用于大规模数据(n≤10000, t≤1e18)。样例验证表明算法正确性,能高效处理极大变换次数情况。

2025-12-23 16:45:00 753 1

原创 【计算几何】投影变换和齐次坐标

本文介绍了齐次坐标在计算几何中的应用。齐次坐标用三维向量(x1,x2,x3)表示二维点(x1/x3,x2/x3),其中x3=0表示无穷远点。直线Ax+By+C=0的齐次形式为(A,B,C)。文章阐述了四个关键性质:1)直线和点都表示为三维向量;2)点在线上等价于点积为零;3)直线叉积得到交点;4)点叉积得到所在直线。还说明了射影变换保持直线性但不保持平行性,并比较了欧式平面与齐次平面在平行线交点上的差异。最后提供了相关学习资源链接。

2025-12-23 07:00:00 1821 1

原创 【组合数学】P6767 [BalticOI 2020/2012 Day0] Roses|普及+

现在 Valentine 要给他的 $N$ 个妹子买玫瑰花,现在 Valentine 面前有两家店,每一家店有无数朵玫瑰花,但是他们按束卖。第一家店一束花里有 $A$ 朵,每一束花要用 $B$ 块钱。第二家店一束花里有 $C$ 朵,每一束花要用 $D$ 块钱。求 Valentine 至少买 $N$ 朵花最少需要花多少钱。至少可以这么理解,假如 $M>N$,但是买 $M$ 朵花的钱比买 $N$ 朵花的少,Valentine 就会买 $M$ 朵花,并把多出来的花给其他妹子,没错,Valentine 很花

2025-12-22 17:00:00 571 1

原创 【计算几何 二分查找】P5485 [JLOI2010] 铁人双项比赛|普及+

铁人双项比赛是吉林教育学院的一项传统体育项目。该项目比赛由长跑和骑自行车组成,参赛选手必须先完成 $k$ 公里的长跑,然后完成r公里的骑车,才能到达终点。每个参赛选手所擅长的项目不同,有的擅长长跑,有的擅长骑车。如果总赛程 $s=k+r$ 一定,那么 $k$ 越大,对擅长长跑的选手越有利;$k$ 越小,对擅长骑车的选手越有利。 现在给定总赛程 $s$,以及每个选手长跑和骑车的平均速度,请你求出对于某个指定的选手最有利的 $k$ 和 $r$。所谓最有利,是指选择了这个 $k$ 和 $r$ 后,该选手可以获

2025-12-22 07:00:00 1234 49

原创 【数学】P8093 [USACO22JAN] Searching for Soulmates S|普及+

Farmer John 的每头奶牛都想找到她们的灵魂伴侣——另一头具有相似特点的奶牛,与她们最大程度地相容。每头奶牛的性格由一个整数 $p_i$($1 \leq p_i \leq 10^{18}$)描述。两头性格相同的奶牛就是灵魂伴侣。奶牛可以通过「改变操作」,对她的性格乘以 $2$,除以 $2$(当 $p_i$ 是偶数时),或者加上 $1$。Farmer John 最初以任意方式配对了他的奶牛。他很好奇为使每对奶牛成为灵魂伴侣需要进行多少次改变操作。对于每对奶牛,求配对中的第一头奶牛所必须进行的最小改

2025-12-21 17:00:00 1659

原创 【数学 线性代数 矩阵结合律】P8110 [Cnoi2021] 矩阵|普及+

给定两个长度为 $n$ 的序列 $\{a_n\}$,$\{b_n\}$ 与一个整数 $k$。设矩阵 $A$ 满足 $A_{ij}=a_i\times b_j$,求 $A^k$ 的所有元素的和在模 $998244353$ 意义下的结果。

2025-12-21 07:00:00 1040 2

原创 【计算几何】仿射变换与齐次矩阵

本文介绍了仿射变换在计算几何中的应用,包括旋转、缩放、反射、错切和平移五种基本变换的矩阵表示。通过齐次矩阵可以将多次变换合并为单一矩阵操作。文章分析了仿射变换的四个重要性质:保距性、保向性、面积变化特性以及保持直线和平行性的特点。最后提供了相关视频课程链接和测试环境信息,帮助读者深入理解和应用这些数学概念。文章采用专业而简洁的数学语言,适合具备线性代数基础的读者学习仿射变换原理及其几何特性。

2025-12-20 21:39:51 1057 1

原创 【计算几何 线性代数】仿射矩阵的秩及行列式

本文探讨了仿射变换的数学特性,重点分析了仿射矩阵的秩、面积变化规律以及雅可比矩阵的应用。文章首先解释了2×2仿射矩阵的秩及其几何意义,指出秩为0时所有点映射到原点,秩为1时点集被压缩到一条直线。随后通过无穷小正方形变换推导出仿射变换面积变化等于矩阵行列式的结论,并分析了向量方向变化情况。最后介绍了雅可比矩阵在多元函数变换中的作用,指出其行列式决定面积/体积变化率。文章采用严谨的数学推导,结合几何直观,为理解仿射变换提供了理论基础。

2025-12-20 21:38:07 680 1

原创 【数学 前缀和】P8271 [USACO22OPEN] COW Operations S|普及+

Bessie 找到了一个长度不超过 $2 \cdot 10^5$ 且仅包含字符 'C','O' 和 'W' 的字符串 $s$。她想知道是否可以使用以下操作将该字符串变为单个字母 'C'(她最喜欢的字母):1. 选择两个相邻相等的字母并将其删除。2. 选择一个字母,将其替换为另外两个字母的任一排列。求出这个字符串本身的答案对 Bessie 而言并不足够,所以她想要知道 $s$ 的 $Q$($1\le Q\le 2\cdot 10^5$)个子串的答案。

2025-12-19 16:30:00 871 2

喜缺全书算法册 C++实现

电子书和博文的分工。电子书以:原理、正确性证明、总结为主;博文(题解)以思路、源码、封装类(模板)、测试用例、流程图为主。 当前阶段:以二分查找为主,前缀和为辅,之后会有其它算法的。文字算法见我的博文,视频算法见我的学院课程。 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都为 n 。每次操作中,你可以选择交换 nums1 中任意两个下标处的值。操作的 开销 为两个下标的和。你的目标是对于所有的 0 <= i <= n - 1 ,都满足 nums1[i] != nums2[i] ,你可以进行 任意次 操作,请你返回达到这个目标的 最小 总代价。请你返回让 nums1 和 nums2 满足上述条件的 最小总代价 ,如果无法达成目标,返回 -1 。 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的:

2023-09-17

喜缺全书之平凡的经历最新版

《闻缺陷则喜》这本书由何志丹与魏家瑜共同创作,其核心理念是通过暴露和面对问题,促进个人和团队的成长。书名源于作者们对于缺陷的积极态度,他们认为缺陷是学习和进步的契机,而不是阻碍。在当前知识爆炸的时代,分享和交流成为提升效率的关键。 书中涵盖的工作经历部分,作者强调了工作中遇到的挑战和陷阱,这些经历不仅对于技术开发者,如C/C++/VC程序员,具有宝贵的参考价值,也适用于任何行业。作者提到,许多工作中需要但网络上难以找到的信息,正是他们书籍想要填补的知识空白。他们提倡通过阅读、实践和再传授来深化理解和掌握知识,比如,通过反复阅读多本书籍,甚至制作教学视频,以教促学。 生活中的点滴和女儿的成长部分,反映了作者对个人生活和家庭教育的关注。这部分内容可能包含如何平衡工作与家庭,以及如何培养孩子独立思考和解决问题的能力。作者的人生态度和教育观念,可能会给读者提供关于如何在生活中学习和成长的新视角。 投资理财的亏损与教训部分,则揭示了作者在财务管理和投资上的经验和反思。他们可能分享了投资失败的案例,从中提炼出的教训,旨在帮助读者避免同样的错误,提高投资决策的明智程度。这部分内容对于希望提升理

2023-08-18

闻缺陷则喜2021九月版

主要增加:C#调用托管C++,托管C++调用C++

2021-09-11

01BFS最短距离原理和C++实现

n个端点的无向图,编号范围[0,n)。Edges0表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有路联接。Edges1表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有损坏的路连接。要想让s和d之间至少有一条通道,最小需要维修多少条路。如果无法到达,请返回-1。可能有环,但无自环,重边,可能不联通。

2023-09-29

深度优先搜索(BFS)的原理和C++实现

n个端点的无向图,编号范围[0,n)。每个端点最多4条出边。edges表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有边联接。求s到d的最少需要经过多少条边。如果无法到达,请返回-1。可能有环,但无自环,重边,可能不联通。

2023-09-28

美丽塔单调栈O(n)解法

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的: 1 <= heights[i] <= maxHeights[i] heights 是一个 山状 数组。 如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组: 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j] 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k] 请你返回满足 美丽塔 要求的方案中,高度和的最大值 。

2023-09-27

较难算法: 美丽塔 时间复杂度O(nlongn)

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的: 1 <= heights[i] <= maxHeights[i] heights 是一个 山状 数组。 如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组: 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j] 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k] 请你返回满足 美丽塔 要求的方案中,高度和的最大值 。

2023-09-24

让数组不相等的最小总代价

让数组不相等的最小总代价 可运行源码,VS2022 C++17 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都为 n 。每次操作中,你可以选择交换 nums1 中任意两个下标处的值。操作的 开销 为两个下标的和。你的目标是对于所有的 0 <= i <= n - 1 ,都满足 nums1[i] != nums2[i] ,你可以进行 任意次 操作,请你返回达到这个目标的 最小 总代价。请你返回让 nums1 和 nums2 满足上述条件的 最小总代价 ,如果无法达成目标,返回 -1 。

2023-09-23

《闻缺陷则喜》之《主册》

闻缺陷则喜 1 第一章:平凡的经历 5 第二章:观念与想法 5 1. 基础 6 1.1. 认知鸿沟 6 2. 传播 6 3. 沟通 6 3.1. 淡化对错 6 3.2. 不要随意批评别人 6 3.3. 参与感 6 3.4. 如果错了,马上认错 7 3.5. 从别人的立场说服对方 7 3.6. 具体到场景 7 4. 交往与合作 7 4.1. 双赢思维 7 4.2. 合作层次 8 4.3. 能力+信息(情报)+资源=成就 8 5. 工作相关 8 5.1. 金融骗局 8 5.2. 对小白而言创业比股票危险的多 9 5.3. 投资比创业稳妥的多 9 5.4. 程序员干不到30岁 9 5.5. 忠诚度与能力 10 5.6. 拒绝无意义加班 10 5.7. 内卷的历史 11 5.8. 关于社保 11 6. 家庭相关 12 6.1. 我的遗产 12 6.2. 金钱观 12 6.3. 借贷观 13 6.4. 女儿的婚姻 13 6.5. 轶事 14 6.6. 生育观 15 6.7. 教育观 15 6.8. 不要因为担心亲友不舒服,而不指出错误 16 7. 工作技巧 16 7.1. 八二原理 16 8.

2022-09-10

二分查找旋转数组源码和视频

包括视频和三个版本的源码(初始、寻找右数组左边界、完成) 已知整数数组nums,先按升序排序后,再旋转。旋转k位后,元素分别为nums[k],nums[k+1]...nums[0]...nums[k-1]。请查找target 是否存在,如果存在返回所在索引;否则返回-1。假定nums没有重复的元素。 假定排序后的数组为{1,2,3,4,5}。 旋转0位:不变。 旋转1位:{2,3,4,5,1} 旋转2位:{3,4,5,1,2} 旋转3位:{4,5,1,2,3} 旋转4位:{5,1,2,3,4} 1.解题思路 观察后,可以得到如下结论: 旋转数组,可以拆分成左右两个升序数组,且左数组的任意元素都大于右数组的任意元素。 分两步: 一,找到数组的分界线RBegin,[0,RBegin)是左数组,[RBegin,n)是右数组。特殊情况:只有一个升序数组,则RBegin为0,左数组为空。 如果是小于等于nums.back(),在右边找;否则在左边找。升序寻找元素之前已经讲过了,就不累赘了。

2023-08-20

C# 获取C++的连续数据

C# 获取C++的连续数据。 两种方式:1,返回C++指针,2,将值存到C#的数组中。

2022-04-02

闻缺陷则喜版本号20220123

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2022-01-23

闻缺陷则喜2021年12月26.doc

闻缺陷则喜,本人拙作,注将软件工程。

2021-12-26

闻缺陷则喜20211205

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2021-12-07

Windows性能监控工具Perfmon使用

Windows性能监控工具Perfmon使用

2021-10-31

关于halcon膨胀腐蚀开闭.doc

关于halcon膨胀腐蚀开闭

2021-11-14

简单的C#类 生成对应的C#类

开发工具: C#2013 功能: 针对简单的C#类,生成对应的非托管C++类,并生成托管C++的转换函数。 应用场景: 界面层、数据层C#,逻辑层C++。 简单的C#类:类型只包括 double string List

2021-11-07

保存文件的同时删除文件,保存用时会略微升高

保存文件的同时删除文件,保存用时会略微升高。没必要花大功夫专门处理 保存500文件用时(毫秒):30906 删除文件同时,保存500文件用时(毫秒):30263 删除500文件用时(毫秒):363 保存500文件用时(毫秒):29155 删除文件同时,保存500文件用时(毫秒):29258 删除500文件用时(毫秒):426 保存500文件用时(毫秒):27992 删除文件同时,保存500文件用时(毫秒):29068 删除500文件用时(毫秒):686 保存500文件用时(毫秒):29172 删除文件同时,保存500文件用时(毫秒):31837 删除500文件用时(毫秒):337 保存500文件用时(毫秒):29373 删除文件同时,保存500文件用时(毫秒):29563 删除500文件用时(毫秒):321 保存500文件用时(毫秒):29663 删除文件同时,保存500文件用时(毫秒):30180 删除500文件用时(毫秒):350

2021-10-11

多线程样例一 读写参数文件

事情起因: 修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。 解决思路: 读文件费时间,所以开一个线程读文件。 抽象后的类似demo: 假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行100次。 类和函数 读取文件函数: 一,List<int>增加本序号(0开始)。 二,随机生成5000整数,加到list<int>中。 三,写文件(文件名为序号,如0.txt),文件夹File。 四,Sleep(600)。 五,记录日志:本函数开始执行 时间,结束时间,序号。 六,复制List<int>到参数。 模拟图像处理函数: 一,复制参数 二,参数保存到文件,文件名list<int>第一个int,文件夹img。 三,Sleep(500)。 六,记录日志:本函数开始执行 时间,结束时间,序号。 参数类(跨线程): 一,从list<int>复制参数。 二,复制数据到list<int>。 线程: 启动线程“读取参数”线程:执行100次 读取参数功能。 启动线程“模拟图像处理”线程:执行100次 模拟图像处理。 运行预期结果: File文件夹中有0到100共101个文件。 img有约80个文件。 img有的文件,File文件夹中一定有,且完全相同。用文件夹比较工具(如:BCompare)查看。 查看日志:“读取参数”线程约60秒完成,模拟图像处理”线程约50秒完成。

2021-09-09

C#调用C++的类和函数

C#直接调用C++的函数,C#调用托管C++,C++托管调用非托管C++

2021-08-31

亲士CAD工具箱支持CAD2013及以上

支持CAD2013及以上版本,不支持CAD2012及以下版本。

2026-01-02

本博文算法对应源码单元测试用例

电子书、博文和附录分工。电子书以总结、原理、正确性证明为主;博文(题解)以思路、源码、封装类(模板)、测试用例、流程图为主。附录:封装好的类、小题题解、很长的源码和单元测试。 本书针对读者:刚刚入职的软件工程师,假定已经学完了“C++”和“算法与数据结构基础”。工程师和学生不同,工程师的首要目标的实用。工程师用到的知识是未知的,很多都是临时用一下,之后几年甚至一辈子都不会用到。受精力的限制,不可能将所有遇到的知识全部学完。本文会有超多用例,方便工程师从最相近的样例开始修改。所以,本文先讲如何使用,再讲原理,最后讲样例;设计(如:流程图)和源码会作为附录提供。

2024-07-05

位运算、状态压缩、枚举子集汇总.html

位运算、状态压缩、枚举子集汇总.html

2024-04-27

本博客配套流程图,会经常更新

Bob 站在单元格 (0, 0) ,想要前往目的地 destination :(row, column) 。他只能向 右 或向 下 走。你可以为 Bob 提供导航 指令 来帮助他到达目的地 destination 。 指令 用字符串表示,其中每个字符: 'H' ,意味着水平向右移动 'V' ,意味着竖直向下移动 能够为 Bob 导航到目的地 destination 的指令可以有多种,例如,如果目的地 destination 是 (2, 3),"HHHVV" 和 "HVHVH" 都是有效 指令 。 然而,Bob 很挑剔。因为他的幸运数字是 k,他想要遵循 按字典序排列后的第 k 条最小指令 的导航前往目的地 destination 。k 的编号 从 1 开始 。 给你一个整数数组 destination 和一个整数 k ,请你返回可以为 Bob 提供前往目的地 destination 导航的 按字典序排列后的第 k 条最小指令 。

2024-04-24

利用二分查找解决H指数问题

利用二分查找解决H指数问题。

2024-01-01

搜索矩阵C++实现:二分查找Z形查找

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。

2023-12-17

长度最短的子数组C++实现

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 示例 2: 输入:target = 4, nums = [1,4,4] 输出:1 示例 3: 输入:target = 11, nums = [1,1,1,1,1,1,1,1] 输出:0 提示: 1 <= target <= 109 1 <= nums.length <= 105 1 <= nums[i] <= 105

2023-12-10

[二分查找双指针]LeetCode881: 救生艇

给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回 承载所有人所需的最小船数 。

2023-12-03

两数之和 - 输入有序数组

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。 以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

2023-11-26

C++二分查找算法:132 模式

给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。

2023-11-12

C++算法:第 N 位数字原理、源码、测试用例

给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字。 示例 1: 输入:n = 3 输出:3 示例 2: 输入:n = 11 输出:0 解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ,它是 10 的一部分。 提示: 1 <= n <= 231 – 1

2023-11-05

C++二分查找算法应用:最长递增子序列 原理、源码、测试用例

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例 2: 输入:nums = [0,1,0,3,2,3] 输出:4 示例 3: 输入:nums = [7,7,7,7,7,7,7] 输出:1 参数范围: 1 <= nums.length <= 2500 -104 <= nums[i] <=104

2023-10-29

二分应用:峰值查找 原理、源码、测试用例

1. 题目 长度为n的数组nums,请返回任意一峰值的索引。符合以下条件之一i便是峰值的索引。 n等于1 i等于0 n>1 i等于0 nums[i] >nums[i+1] n>1 i等于n-1 nums[i] > nums[i-1] 0<i<n-1 nums[i]>nums[i-1] nums[i]>nums[i+1] 题目保证nums[i]不等于nums[i+1]。 2. 分析 假定: nums[left,r)符合nums[left]>nums[left-1],且nums[r-1]>nums[r]。显然初始情况nums[0,n)符合。 推论一:如果[left,r)的长度为1,则left就是返回的索引。 推论二:假定left < mid<r。如果mid[mid] > mid[mid-1],则nums[mid,r)也符合假定。如果mid[mid] < mid[mid-1],则nums[left,mid)也符合假定。 推论三:推论二也可以也可以理解成分别抛弃[left,mid)和[mid,r)。令mid = left+(r-left)/2,由于r-left>=2,所以left<mid<

2023-10-22

C++算法:前缀和基础

长度为n的数组nums,共有n+1个以nums[0]开始的子数组。索引范围分别为[0,i),i取值区间[0,n]。preSum[i]记录子数组[0,i)的和。比如:nums = {1,2,3,4},则preSum = {0,1,3,6,10}。通过preSum,我们可以求任意nums的子数组和。子数组[i,j)等于子数组[0,j)减去[0,i),也就是子数组[i,j)的和等于preSum[j] – preSum[i]。如果i等于j,则preSum[i]-preSum[i],和为0,符合计算公式。如果i大于j,则非法,需要提前排除。

2023-10-15

时间复杂度O(40n*n)的C++算法:修改图中的边权

给你一个 n 个节点的 无向带权连通 图,节点编号为 0 到 n - 1 ,再给你一个整数数组 edges ,其中 edges[i] = [ai, bi, wi] 表示节点 ai 和 bi 之间有一条边权为 wi 的边。 部分边的边权为 -1(wi = -1),其他边的边权都为 正 数(wi > 0)。 你需要将所有边权为 -1 的边都修改为范围 [1, 2 * 10^9] 中的 正整数 ,使得从节点 source 到节点 destination 的 最短距离 为整数 target 。如果有 多种 修改方案可以使 source 和 destination 之间的最短距离等于 target ,你可以返回任意一种方案。 如果存在使 source 到 destination 最短距离为 target 的方案,请你按任意顺序返回包含所有边的数组(包括未修改边权的边)。如果不存在这样的方案,请你返回一个 空数组 。 注意:你不能修改一开始边权为正数的边。

2023-10-14

多源最短路径的原理及C++实现

当一层循环执行完后,m_vMat[i1][i2]表示经过[0,i)中的任意个点的最短距离。 初始状态下, m_vMat[i1][i2]表示直达的最小距离,也就是经过0个点。 通过[0,i)中任意个点,i1到i2的最短路径记为PrePathi1i2,通过[0,i+1)中任意个点,i1到i2的距离的路径为Pathi1i2,如果Path不经过Pathi1i2,则和PrePathi1i2相同。如果经过则可以拆分成{i1…i}+{i…i2},显然{i1…i}是PrePathi1i,{i…i2}是PrePathii2,否则替换成PrePathi1i和PrePathii2。 m_vMat同时表示PreMath和Math,如果m_vMat[i1][i]或m_vMat[i][i2]已经更新,会带来错误的结果么?结果是不会,会更新但值不变。 当i1等于i时: m_vMat[i][i2] = min(…, m_vMat[i][i] + m_vMat[i][i2]); 由于m_vMat[i][i]为0,所以右式就是左式。 当i2等于i时,类似。

2023-10-04

堆优化迪氏最短单源路径原理及C++实现

4.1. 时间复杂度 O(ElogE),E是边数。适用与稀疏图。 4.2. 使用前提 边的权为正。可以非连通,非连通的距离为-1。 4.3. 原理 优选队列(小根堆)记录两个数据:当前点到源点距离,当前点。先处理距离小的点;如果距离相等,先处理谁都可以。可以用pair记录,不用重写小于。优先队列只记录如下情况的距离: 一,{0,源点}。 二,任意点的最短距离和可以直达的边。 如果是有向图,则入队数量等于边数,计算出起点最短路径的那一轮。无向图,则翻倍。显然出队数量等于入队数量。优先队列入队和出队时间复杂度都是O(logn),故总时间复杂度为O(nlogn)。

2023-10-03

.有向图计数优化版原理及C++实现

不需要拓扑排序,也不需要并集查找,直接dfs了。完成以下三个职责: 一,DFS那些端点在环上。 二,DFS环上各点此环的长度。 三,DFS非环上各点。

2023-10-02

有向图访问计数的原理及C++实现

现有一个有向图,其中包含 n 个节点,节点编号从 0 到 n - 1 。此外,该图还包含了 n 条有向边。 给你一个下标从 0 开始的数组 edges ,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的边。 想象在图上发生以下过程: 你从节点 x 开始,通过边访问其他节点,直到你在 此过程 中再次访问到之前已经访问过的节点。 返回数组 answer 作为答案,其中 answer[i] 表示如果从节点 i 开始执行该过程,你可以访问到的不同节点数。 2 <= n <= 100000 无自环。

2023-10-01

朴素迪氏最短单源路径的原理及C++源码及测试用例

Dijkstra算法,翻译为迪杰斯特拉或狄克斯特拉。在下驽钝,记不住如此长的翻译,故简称迪氏。 3.1.时间复杂度 O(n2),端点数的平方。 3.2.使用前提 边的权为正。可以非连通,非连通的距离为-1。

2023-09-30

空空如也

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

TA关注的人

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