- 博客(33)
- 收藏
- 关注
原创 Codeforces Round 1039 (Div. 2)(补题)
一场不好的cf,不太擅长构造,不知道咋说,就像封面的老海绵以及粉海星,尽量达到保持心态平静~~~~
2025-07-28 11:49:43
884
原创 Educational Codeforces Round 181 (Rated for Div. 2)(补题)
自我感觉不错的一篇,虽说只补了3个题,但是感觉收获颇丰,可能是自己的知识面太狭窄了。嗯,又让我拾回信心。
2025-07-23 11:16:58
1040
2
原创 二叉树的初步认识
本篇介绍的非常基础,主要是为了巩固,当然写这一篇的原因,还是有些逃避的意味,搜索题太难了。开始怀疑自己是不是学习这块的料了。[吐~~~~~~~~~].
2025-07-22 19:20:35
534
原创 Codeforces Round 1037 (Div. 3)(补题)
水~水~水,挺水的一篇,好像我写的都挺水,可能太懒了。写这篇时脑子不知为啥想到了这句话“我的生命是一万次春和景明”,有点跳跃了脑回路。
2025-07-19 15:53:30
851
原创 河南萌新联赛2025第(一)场:河南工业大学(补题)
本文摘要了三道算法题的解题思路与实现代码: 隔板问题:利用第二类斯特林数计算将n个元素划分为m个非空子集的方法数,最终结果需乘以m的阶乘考虑顺序问题。代码使用动态规划预处理斯特林数,时间复杂度O(nm)。 代价转移问题:采用类似Dijkstra的优先队列BFS方法,将数值转换视为状态转移,通过三种基本操作(加1、减1、乘2)寻找从初始值到目标值的最小代价路径。使用优先队列确保每次扩展最小代价状态。 两段最大子段和问题:通过正向和反向两次动态规划预处理每个位置的最大子段和,然后枚举所有可能的分割点计算两段和的
2025-07-17 19:53:01
912
原创 滑动窗口的初步了解
本文介绍了滑动窗口算法的两种类型:定长滑动窗口和不定长滑动窗口。定长滑动窗口适用于窗口大小固定的问题,如计算定长子串中元音的最大数目、子数组最大平均数等。不定长滑动窗口则适用于窗口大小可变的问题,如寻找无重复字符的最长子串。文章通过具体题目展示了两种类型滑动窗口的应用,并提供了相应的代码实现。滑动窗口算法通过维护窗口边界来高效解决问题,在字符串和数组相关题目中具有广泛应用。
2025-07-09 19:43:21
311
原创 单调队列的简单总结
本文介绍了单调队列与优先队列的应用场景及差异。单调队列通过双端队列实现,维护队列的单调性,适用于滑动窗口最大值/最小值问题(如P1886滑动窗口模板题)。优先队列基于堆结构,默认最大堆,可通过greater实现最小堆,同样适用于滑动窗口问题。文章通过具体例题(P1714切蛋糕)展示了单调队列在前缀和问题中的应用,并对比了两种队列在解决滑动窗口问题时的实现方式。两种数据结构各有侧重:单调队列更擅长维护局部窗口的单调性,优先队列则适合处理全局优先级问题。
2025-07-07 18:44:34
440
原创 2025 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第七届CCPC河南省大学生程序设计竞赛(补题)
本篇博客是对于前一阵的比赛的补题,以及比赛时自己的不足。
2025-06-07 11:07:31
1267
原创 2025年5月29日训练赛补题【E题】
这篇文章探讨了训练赛中关于连通分量问题的解题思路。题目要求判断两个国家是否连接,关键在于满足i<j的条件,从而避免多条路径。通过分析可得出aj-j<ai-i且bi-i≤bj-j的条件,作者利用单调栈维护连通分量,最终栈的大小即为答案。文中提供了详细的代码实现,并通过贪心策略解释了为何更新最大值。尽管解题过程中遇到理解障碍,但通过这次经历加深了对单调栈和连通分量的认识。
2025-05-29 18:48:45
338
原创 【2025河北 秦皇岛CCPC训练赛】
摘要: 本文分享了三个编程竞赛题目的解题思路与代码实现。第一题从字符串中查找特定子串并输出前缀;第二题通过模拟操作判断01字符串的合法性;第三题使用双端队列模拟UNO游戏规则处理出牌逻辑,避免了边界问题。作者反思了自身编程实现能力的不足,并提供了对应的AC代码(C++)。
2025-05-28 17:46:03
692
原创 单调栈模板
本文介绍了单调栈的原理、模板代码及其常见应用场景。文章首先给出了单调栈的基本模板(支持递增/递减两种模式),然后重点分析了两种典型应用:1)寻找下一个更大/小元素问题,通过洛谷P2866例题详解解题思路;2)柱状图相关问题,包括最大矩形面积(LeetCode 84题)和接雨水问题(LeetCode 42题),均配有详细代码和思路图解。单调栈的核心在于维护元素的单调性,通过弹出不符合条件的元素来高效解决问题,时间复杂度通常为O(n)。文中案例展示了如何利用单调栈处理数组元素间的大小关系问题。
2025-05-24 18:33:17
589
原创 25.5.5训练赛补题
IOS;ll n,k;cin>>n>>k;ll sum=0;for(ll i=1;i<=n-1;i++)sum+=i;return 0;这一题没什么说的纯纯签到题,如果理解了题意之后非常简单对于降雨这两道题,当时想的复杂了,导致与正解偏离,最后样例没过完,比赛过后看见别人的代码,才发现解法并没有我想的那么复杂。
2025-05-05 14:10:03
206
原创 c++全排列函数以及lower_bound()函数和upper_bound()函数
本篇只是对于函数next_permutation(开始,结束),输出所有比当前排列大的排列,顺序是从小到大。prev_permutation(开始,结束),输出所有比当前排列小的排列,顺序是从大到小。来进行解释总共讲了四个函数1,next_permutation(开始,结束),输出所有比当前排列大的排列,顺序是从小到大。2.prev_permutation(开始,结束),输出所有比当前排列小的排列,顺序是从大到小。注意:其实按照当前字典序的大小从小到大进行排序。
2025-05-03 15:43:39
515
原创 校队训练赛4.26
ll a,b,c;return 0;本题没什么说的就是签到题本次团体赛,感受很多,首先是自己知识方面的欠缺,对于前缀和与差分不是太了解,其次是团队的默契,本人自认为,还是很有默契的,对于脑子的想法能很快实现出来,然后一起寻找,正解。
2025-04-26 16:46:09
359
原创 c++的队列与双端队列介绍
本章是对于队列与双端队列的解释与对比,以及两者的用法queue 是一种遵循先进先出(FIFO)原则的数据结构,就像日常生活中排队一样,先到的人先接受服务。在 C++ 里,queue 属于容器适配器,默认以 deque 作为底层容器,不过也能使用 list 来实现。它仅允许在队列的一端(队尾)插入元素,在另一端(队头)删除元素。queue:严格 FIFO,适合需要先进先出的场景(如任务队列、BFS)。deque:双端操作灵活,适合需要动态调整的场景(如滑动窗口、撤销操作)。
2025-04-09 15:41:40
1025
原创 【筑梯杯郑州轻工业大学第十七届程序设计大赛(同步赛)(部分题解)】
通过补题才发现有太多没了解过的东西,像mktime函数,以及求最大公因数的函数gcd。
2025-04-09 14:25:01
395
原创 【c++中stack的用法】
什么是stack,stack又被称为栈,栈是一种重要的数据结构,其中最大的特点就是先进后出。stack<数据类型> 容器名同时还要包含#include<stack>头文件例子://stack的定义stack<结构体类型>s4;到此为止,就是个人对于栈的粗略的理解。
2025-04-02 13:25:37
542
原创 【第三次训练赛】
bool judet(ll x):定义一个名为judet的函数,它接收一个long long类型的参数x,表示设定的截取高度,返回一个布尔值。:声明一个long long类型的变量sum,用于存储按照高度x截取后得到的木材总长度,初始化为 0。:声明一个long long类型的变量s,用于存储当前合并的两个最小数字的和,初始值为 0。:声明一个long long类型的变量ans,用于存储合并的总代价,初始值为 0。if (s[i] >= x):如果当前树的高度s[i]大于等于设定的高度x。
2025-03-30 17:58:56
819
原创 【“新华三杯”第十届成都信息工程大学ACM程序设计竞赛(同步赛)(重现赛)】
我们可以约定,最后一个人计算前面(n - 1)个人中黑帽子的数量,如果黑帽子数量是奇数,他就说 “黑色”,如果是偶数,他就说 “白色”。对于倒数第二个人(第(n - 1)个人),他能看到前面(n - 2)个人帽子的颜色,结合最后一个人说的话,他就能推断出自己帽子的颜色。因为他知道前面(n - 1)个人中黑帽子的奇偶性(由最后一个人告知),又能看到前面(n - 2)个人中黑帽子的数量,所以可以算出自己帽子的颜色。同理,对于前面的人,都可以根据后面人说的话和自己看到的前面人的帽子颜色来推断出自己帽子的颜色。
2025-03-30 15:05:48
653
原创 【Kousuke‘s Assignment 】
对于这一题,主要利用前缀和,来做的,再利用map来记录是否出现过,如果出现过,则说明有一段为零,则答案加一,或者输入的数为零则同样满足,= 0,ms[1] 未出现过,所以 ms[1] = 1。满足 ms[12] == 1,ans = 1,sum = 0,满足 ms[43] == 1,ans = 2,sum = 0,满足 k == 0,ans = 1,sum = 0,满足 k == 0,ans = 2,sum = 0,满足 k == 0,ans = 3,sum = 0,输出 ans 的值,即 2。
2025-03-26 14:51:33
439
2
原创 【F 题 跳石头】
遍历过程中,如果下一块石头与当前石头的距离小于 x,则移除这块石头(totl 加 1);否则,更新当前位置为下一块石头的位置。如果可以达到,则更新答案 ans = mid,并将左边界 ret 更新为 mid + 1,继续向右寻找更大的可能值。最后,如果移除的石头数量 totl 不超过 k,则返回 true,表示可以达到最小距离 x;仔细观察可以见的,这是一个二分答案的题目,要从0到L之间找到符合条件的最大答案,i 用于遍历石头的位置数组,now 记录当前所在的石头位置,totl 记录需要移除的石头数量。
2025-03-23 09:18:00
197
1
原创 【第二次校队训练赛的E题题解】
对于这一题,只需要考虑第一次为零和第二次为零的时候,当第一次为零的时候操作归零,只要在接下来的操作中可以找到零,就用剩下的次数来除以第二次为零时的位置加上第一次,就是最终答案。
2025-03-22 16:31:35
212
原创 【女神节的魔法花园】
先理解题意,就是将以3开头和以8结尾的连续区间,进行反转,将这个区间的3和8进行交换,也就是把3全变为8,把8全变为3,然后寻找相距最远的两个3的距离。3,对于3的个数为1,并且不在后两位,先找出最左边的3的位置 f,然后进行反转,输出n-2-f;4,对于个数不为1的,无论如何反转,最后一位都为3,所以直接输出n-1-f。2,对于3的个数为1的,并且3的位置在后两位时,无论如何反转都是0;1.对于整个字符串都没有3的情况,也就是3的个数为0,直接输出0;新手小白,大佬勿喷,希望可以友好交流。
2025-03-19 13:59:22
209
原创 【上海理工大学校内选拔赛(重现赛)部分题解】
首先解题思路:用结构体来存住下标与其对应的值,然后以数的大小进行排序,然后进行最大值的处理,最后以其对应的下标来进行排序输出。以上几题均是自己看的懂得,另外几题看了发现有许多自己没学过的。根据题意将上下两个数组分别从小到大和一个从大到小。然后以相同的下标进行相乘再进行相加。没什么说的就是一个快速幂模板。总的来说,还是感觉有点麻烦。
2025-03-17 09:24:18
414
原创 【时间复杂度常见的计算】
前言一、时间复杂度是什么?二、时间复杂度的计算1.基本步骤2.常见的时间复杂度总结对于判断一段代码的好坏,取决于该代码运行的时间与占用的空间,也就是时间复杂度与空间复杂度,本章就先讲一下时间复杂度,主要包含常见的时间复杂度的计算。总而言之,该篇文章就是简单的介绍了一下时间复杂度,仅仅是自己的粗鄙的看法,本人也是第一次接触这些东西,就想着发一篇文章来加深一下自己的理解,新人小白一枚,大佬勿喷,有理解错的地方希望能给小弟提点一下。
2025-03-16 16:57:37
1785
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人