- 博客(90)
- 收藏
- 关注
原创 架构设计反思
4 敏捷开发,需要架构图!架构图不是摆架子用的,必要的架构图是团队的指南针!5 架构设计没有标准答案,也不能只想要标准答案,既然选择架构设计,就做好承担对应责任是一切打算,没有投机取巧,更不能一蹴而就。3 架构设计,不能轻率,不是炫技,是结合团队技术水平,预算成本,进行合理的设计,不然就会耗费远超预期的成本。2 架构设计,核心在于技术变现,技术选型,如何搭配技术,使用技术,可以使得架构能够匹配当前业务需求。9 牺牲一定的灵活性,预先设计架构图等,才能让架构设计更稳定,完全自由的架构设计 反而是大忌。
2025-06-05 01:00:52
279
原创 《告别AOP!我用Spring配置开关实现了零侵入埋点》
🔥 「配置优于注解」的轻量级AOP替代方案作为清华实验室研发实践成果,ZeroAop提出接口默认方法+条件装配的创新组合,解决传统AOP在简单场景下的三大痛点:1️⃣ 零学习成本 - 仅需1个接口+2个实现类(无需理解切面/注解)2️⃣ 热切换能力 - 通过@ConditionalOnProperty实现配置秒级生效3️⃣ 无侵入架构 - 关闭状态时自动路由到空实现(零性能损耗)📊 典型应用:用户行为埋点、日志开关、特性标记等可配置化横切逻辑或者开关式配置
2025-05-06 18:51:04
367
原创 双非一本到清华人机交互实验室实习担任开发负责人?——我的前置成长之路一(混沌——有目标)
双非一本院校学生,高考后自学PS、C语言,大学期间努力学习编程知识,通过自学和刷题不断提升能力,大一参加蓝桥杯获省赛一等奖、国赛三等奖。期间克服迷茫与困难,坚持学习JavaSE课程,最终在大一暑假决定走Java后端方向,立志在这条路上坚持到底。
2025-05-05 22:01:58
862
原创 LeetCode刷题日记03
这道题可以用动态规划来做,定义dp[][]二维数组表示前i个元素中和能够为j的表达式个数,并且注意target可能为负数,我们可以定义sum统计nums数组中的所有元素的和,并将dp中的和为j整体加上sum进行右移,最后返回dp[nums.length - 1][target + sum]即可。这道题除了可以用简单的循环除法外,还可以使用位运算来进行判断,通过不断右移来缩小n,当n大于1且n的第一位不是0,直接return false即可,另外n==0的特殊情况直接return即可。
2024-07-07 20:56:54
351
原创 复习题目(2)
NO.11:A子2023。NO.5 :岛屿个数。NO.9:特别数的和。NO.10:冶炼金属。NO.13:网络寻路。NO.14:分巧克力。
2024-04-08 22:10:19
169
原创 [蓝桥杯 2021 国 ABC] 123(前缀和+二分查找)
通过题目描述,我们知道如果单纯用暴力求前缀和肯定过不了大部分样例,我们通过观察可以将数列分为n行,每行都以1开头n结尾,我们可以发现前n行总共的数字数目可以用高斯求和来得出,这样我们可以通过二分查找出所在的行数,我们就直接定位到前1行,对于多出来的部分我们再额外加进去即可。
2024-04-06 17:52:05
287
原创 [蓝桥杯 2019 省 B] 后缀表达式(贪心)
通过题目描述,我们可以用贪心来找出最优策略,如果减号的数量为0个,那么我们对所有数字直接进行相加即可,而对于其他情况,我们可以通过添加括号等方法将所有的负数或者减号都抵消成正数,因此这道题只需要将最大的数减去最小的数,再将其他数字的绝对值一一加上即可,同时注意开longlong防止爆掉。
2024-04-06 16:32:34
236
原创 [蓝桥杯 2017 省 AB] 包子凑数(方案dp)
通过题目描述,我们可以发现,如果包子数目的最大公约数大于1,说明会有无限多个数字无法进行拼凑。因为对于某个无法拼凑的数字,可以乘以最大公约数得到另一个无法拼凑的数字,也就是说如果最大公约数不是1,就会有无穷个无法拼凑的数字,对于有限次的情况,我们可以通过方案dp来存储如果dp[i]可以进行拼凑,说明dp[i + a[i]]同样也可以进行拼凑,根据这个方案,我们就能寻找出答案。
2024-04-06 16:03:22
254
原创 [蓝桥杯 2013 省 A] 大臣的旅费(dfs)
通过题目描述我们可以清楚,如果要找到最大消费,我们就需要找到最长的边,而对于最长的边,我们需要进行dfs,从王国出发,开始寻找最长边,最后寻找到最长边进行高斯求和即可。
2024-04-05 19:09:06
258
原创 [蓝桥杯 2016 省 B] 交换瓶子(暴力枚举)
通过题目描述,我们可以直接模拟题目过程,首先从开头开始遍历,如果遇到错位的瓶子,就从当前瓶子向后再次遍历,直到遇到需要交换的瓶子就直接进行交换,同时统计次数,这样遍历到最后就能直接得出答案。
2024-04-05 18:13:06
269
原创 [蓝桥杯 2022 国 B] 齿轮(优化枚举)
根据题目描述,如果采用dfs暴力做法枚举所有方案,肯定会超时,因此我们需要优化枚举,我们都知道在同一组共同转动的齿轮中,线速度相等,因此角速度的比值就是半径的反比,因此我们只需要找到对于每个齿轮作为起始齿轮,只需要找到其倍数半径是否存在即可,而倍数上限就是假设存在半径为1的齿轮,其中最大半径的齿轮就是转速上限,再用bool类型的ans数组记录该倍数是否存在即可,需要注意的是可以用set数组去重,如果存在重复的齿轮,就可以证明ans[1]肯定蹲在,最后只需要进行访问即可。
2024-04-05 13:42:38
643
原创 [蓝桥杯 2022 国 B] 出差(Dijkstra + 优先队列)
首先根据题目描述,我们可以得知我们需要寻找到起点到终点的最短时长(最短路径问题),而要找出最短路径问题,我们可以用迪杰克拉算法,就是从起始点开始遍历,用优先队列优先从最短路径的点开始遍历,如果花费时间存在更小方案就更新dist数组,最后直接输出dist[n] - time[n]即可。
2024-04-05 12:09:27
333
原创 [蓝桥杯 2022 国 B] 卡牌(暴力 + 二分优化)
暴力做法无法通过所有样例,这时候我们就可以考虑二分答案进行优化,我们通过观察可以发现,假设答案是ans,那么小于ans套的都可以进行拼凑,而大于ans套就无法进行拼凑,这样就具有了二段性,因此我们可以枚举卡牌套数来进行二分,以当前套数凑齐所需要的卡牌数量是否大于m来进行判断。根据题目描述,我们可以知道每张牌可填补的数量有限制,因此我们可以用暴力模拟出过程,首先我们需要寻找出每张牌中最小的牌数,再将空白牌填补成该牌即可,最后我们再进行遍历,寻找出最少数量的牌,就是我们要找的答案。
2024-04-04 23:42:13
202
原创 [蓝桥杯 2022 省 B] 李白打酒加强版(三维动态规划)
通过题目描述,我们可以知道这道题目涉及到某种状态时候的方案数,因此我们可以用动态规划来解决问题,并且我们需要注意到酒的状态,因此我们可以用三维数组来存储状态,我们知道N,M最大不会超过100,并且如果酒超过了100斗,即使遇到100朵花也无法喝完,因此只需要定义大小都为100的三维数组即可,并且枚举三种状态,分别是店家,遇到的花以及酒的斗数都进行枚举,根据状态转移方程求得每个状态的方案数量,并且初始化动态数组dp[0][0][2] = 1;
2024-04-04 13:17:32
1070
原创 [蓝桥杯 2021 省 B] 杨辉三角形(二分查找+枚举)
我们之前学过有关杨辉三角的一些性质,我们知道杨辉三角某个数等于左上和右上两个数相加,但是如果我们按照这个性质依次枚举每行每列,就会很容易超时,因此我们可以枚举列,再二分查找行来寻找满足要求的答案,我们可以先将列数到30,基本涵盖了所有的答案,通过组合数性质来二分查找答案即可。
2024-04-04 12:50:51
1264
原创 [蓝桥杯 2021 省 A] 左孩子右兄弟(树形dp)
根据题目描述,我们可以知道,当某个结点要获取最长长度时候,其某个能获取最长长度的子节点和其兄弟数量的和就是当前的最长长度,因此我们可以用树形dp来依次获取最长的长度,因为我们只需要知道某个节点的子节点数量即可,所以我们可以直接用vector的二维数组来表示两个节点的关系,同时也能获取子节点的数量,再使用dfs依次向下探索,寻找能够获取最长长度的子节点即可。
2024-04-03 22:26:27
180
原创 [蓝桥杯 2020 国 B] 游园安排(二分优化+贪心+dp)
通过题目描述我们可知这是一个最长上升序列的类似题目,而我们需要注意路径问题,即在求出最长子序列长度的同时还要记录当前的最长子序列,因此我们依然可以用二分优化来做题,我们需要用ans来存储答案路径,同时用res来充当二分查找的方案利用dp不断更新路径,最后直接输出ans[len]即可。
2024-04-03 22:04:54
239
原创 最长上升子序列(二分优化)
之前我们用过dp来求最长上升序列的长度,而对于此算法的复杂度为O(n^2),而我们可以用二分来进行进一步的优化,使用贪心策略,遍历每个数组的值,使用ans数组来存储当前的最长上升序列,并利用二分查找来寻找当前ans数组中第一个大于该数字的位置并进行替换,同时统计当前的下标和len之中的最大值,最后输出len长度即可。
2024-04-03 21:46:25
177
原创 最长上升子序列(dp)
根据题目我们得知如果想要找到答案,如果用暴力做法时间复杂度会很大,因此我们需要用动态规划来做,我们用dp数组来记录最长的上升子序列,而对于dp[i] 前i个dp中,如果该数可以接在某个最长子序列的后面,就取其二的最大值,最后在进行一遍遍历,找出最大值即可。
2024-03-30 18:43:00
164
原创 [蓝桥杯 2020 省 AB2] 回文日期(枚举)
根据题目描述,我们可以得知如果寻找规律来做题很难做出来,而直接枚举8位数基本不可能过样例,而通过观察我们可以发现回文日期可以分为前后两段,后面一段就是前面翻转过来的,因此我们可以枚举一半日期,这样就能通过样例,因此我们只需要检查该回文日期的月数和日数是否符合规定,并且判断特殊回文日期是否满足特殊要求即可。
2024-03-30 17:54:55
234
原创 [蓝桥杯 2019 国 AC] 轨道炮(枚举,哈希表)
通过题目描述我们可以知道,如果通过观察寻找规律几乎很难做出,因此我们可以用枚举来列举所有时间(限制1000即可)内每个单位的状态,并用哈希表来存储某个坐标的数量,并记录最大值,最后直接输出答案即可。
2024-03-30 13:18:30
285
原创 [蓝桥杯 2018 国 C] 交换次数(枚举,贪心)
通过题目描述,如果直接使用贪心来做的话,很难找出正确的贪心方法,因此我们可以先枚举所有的排列情况,而对于如何排列成目标状态,我们可以用贪心来做,然后只需要找到正确的答案即可。
2024-03-25 21:56:25
287
原创 [蓝桥杯 2015 国 B] 密文搜索(哈希表,枚举)
从题目中我们可以得知,我们需要枚举所有的子串情况,而对于如何匹配,我们可以给源串和目标串一个固定的顺序,只要源串和目标串中每类字符数量对应相等,那么固定顺序就会相同,因此我们只需要枚举所有的子串情况并用map来记录该情况的数量,并且匹配每个目标字符串的固定顺序即可。
2024-03-25 20:59:54
188
原创 [蓝桥杯 2015 省 B] 生命之树(树的建立+dfs)
由题目给出的范围我们知道,如果n取最大值1e5而且每个分数为1e6,那么最大值僵尸1e11,超过了int类型的范围,因此我们要开longlong类型,防止爆掉,并且我们需要找到以某个节点开始,访问所有子节点,返回的最大值的和最大,并且我们知道,某个点的子节点之间没有连接,因此我们只需要从1开始遍历,逐步返回每个结点的最大值即可。
2024-03-25 20:42:27
185
原创 [蓝桥杯 2019 省 A] 修改数组(哈希表)
通过题目描述我们可以用哈希表(map)来查找某个数字是否出现过,如果出现过就加1,反之直接跳过,因此我们只需要一个变量即可,用一个for循环遍历,从第二个数开始用count来查找是否有值对应,最后直接输出即可,为了优化,我们可以用unordered_map来替换map来提高效率,但是该做法仍有部分案例无法及时通过。
2024-03-23 15:38:49
160
原创 [蓝桥杯 2018 省 AB] 全球变暖(bfs)
通过题目描述我们可以知道,如果要进行图的遍历并且打上相应的标记,我们就可以用到bfs,当到陆地的时候就进行标记,同时我们也需要注意当前陆地能否被淹没,如果当前陆地其中一款区域四周都是陆地的话就不会被淹没,此时我们就可以记录当前不会被淹没的陆地,同时统计所有的联通陆地,拿所有的联通陆地减去不会被淹没的联通陆地就是我们需要的答案。
2024-03-23 12:38:36
202
原创 [蓝桥杯 2016 国 C] 赢球票(队列)
根据题目描述,我们可以得知如果当前数到的数字等于当前的球票编号就直接将当前球票赢取并且在下一个球票再次从1开始数,而我们开始选择的地方也是任意的,因此我们需要枚举所有的情况来找出赢取球票最多的情况,而对于每种情况,我们可以用队列来存储相应的值,每次遍历取出当前对头,如果对头等于当前的数字就直接赢取,如果不是就将对头放在队尾,让队列来实行动态遍历,如果数的数字大于了最大编号就直接break即可。
2024-03-23 11:41:30
186
原创 [蓝桥杯 2020 省 AB3] 乘法表(短除法)
通过题目的描述我们需要将输出的每一个数都转化为n进制,因此我们可以用短除法来进行转化,而转化可以直接用string类型打印,而大于10的数字需要用大写字母来表示。
2024-03-23 11:07:26
233
原创 [蓝桥杯 2022 省 B] 修剪灌木(找规律)
根据题目描述,我们可以寻找规律,将树从左到右编号,我们可以发现,如果想要长得最高有两种情况,一种是从第一次被剪向右开始,直到下一次被剪,另一种是向左开始,我们只需要在两者之间取最大值即可。
2024-03-23 10:25:04
202
原创 [蓝桥杯 2021 省 B] 时间显示
由题目可知,最大值不超过1e18,而longlong最大值为9e18,因此开到longlong足以,我们直接获取小时,分钟,秒数,对于小时数我们直接降到24之内即可。
2024-03-21 22:52:26
379
原创 [蓝桥杯 2019 国 B] 解谜游戏(找规律)
由题目描述,我们可以知道如果模拟这个过程来获取正确答案几乎不可能,我们通过观察可以发现,对于最内圈,旋转的周期是4,中圈是8,外圈是12,也就是说,通过旋转,内圈的某一个字符对应中圈的两个字符以及外圈的三个字符,而对于处在同一水平线上的三个字符可以通过任意轮换到达正确位置,因此我们只需要关心三个字符所占的比例即可,也就是‘G’:‘R’:‘Y’ = 3:2:1。因此我们可以遍历内圈的字符,再统计内中外圈对应字符的数量,如果成比例就通过,如果其中一个比例有误就直接输出NO即可。
2024-03-21 22:40:25
267
1
原创 [蓝桥杯 2015 省 A] 饮料换购(枚举)
根据题目描述,我们可以得知,每一轮饮料可以换1/3原来的饮料,而剩下的低于3个瓶盖会计入新的饮料瓶盖数目中,如此循环往复,直到瓶盖数目少于3就停止,根据这个过程,我们可以直接模拟出来答案。
2024-03-21 22:00:58
346
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人