- 博客(15)
- 收藏
- 关注
原创 洛谷 最大食物链计数——(图的问题)
/这里的y是按顺序加到动态的vector中的,用vector构建二维数组。并且这样的好处在于可以直接知道x连接了哪一个,在遍历的时候,g[x].size(),就能知道个数。对于图的问题可以首先想到入度和出度,在这个问题上考虑入度和出度对于问题的求解。从0到g[x].size()-1,就是连接的y。
2024-05-25 18:22:22
200
原创 蓝桥杯——管道(二分,区间合并)
学习:区间合并,并且这道题也要注意到是一个个离散的点,而不是线段,struct结构体排序时需要自己写一个cmp函数进行排序。简单的二分,但是需要区间合并优化,否则超时不对。
2024-05-21 20:54:44
225
1
原创 蓝桥杯:AB路线——BFS+分层图(三维BFS)
因为一个点可能不止走一次,所以说二维的BFS会超时,但如果变成三维的情况,每当第一次走到三维数组的第一次,就是最短的那个结果,将三维的情况和二维BFS一样变成不可搜索的,并且在搜索过程中,可以根据奇偶来划分下一次是走A还是B,第三维代表的是这个点走的A/B是第几个,整个数组存的是多少点的个数,最后减一是因为结果是步数为点数减一。
2024-05-21 16:50:52
141
1
原创 [蓝桥杯 2022 国 C] 近似 GCD——三指针
从头到尾开始遍历,一个i指针,一个j指针,一个last指针。通过比较i和last查看是否可以对last进行移动,并且关乎者j的移动。
2024-05-21 16:36:25
157
1
原创 蓝桥杯——数三角——STL(map的简单用法)
并且这一条线会被记录两次,分别是除去中心点 剩余的点被枚举到时候记录的、所有在答案我们要去掉cnt/2。思想:1、可以枚举一个点为圆心,再枚举另一个点来连接这个点组成半径,长为d,即为该点到圆心的距离。2、用map来记录一下有多少个点在这个圆上,即有多少个“”等腰三角形“”,先计算答案后再更新map。通过计算对称点来在set里面找题目给的是否有这个计算的对称点,有的话说明三点共线。第一个是关键字,第二个是记录关键字的个数,二者一一映射,并且map是排好序的。
2024-05-21 16:31:45
169
1
原创 [蓝桥杯 2023 省 A] 买瓜——DFS+剪枝优化!!!!
1.如果当前方案的刀数,已经大于了之前已知方案的最优解,剪掉。6.可以将m*2,这样不会出现浮点数,不用担心浮点精度爆炸。,后缀和,从大到小排序sort。2.如果后面的瓜的总和加上已有的还小于m,剪掉。普通的dfs:买整个瓜,买半个瓜,不买这个瓜。5.将瓜的从大到小排序——贪心。3.如果当前重量大于m,剪掉。4.n个瓜遍历结束,结束。
2024-05-14 18:17:01
163
2
原创 [蓝桥杯 2019 国 AC] 大胖子走迷宫——BFS最短路(关于对一个位置进行停留等待)
每次取出队首并向四个方向以及不动拓展,并判断当前位置是否走过以及这个位置小明能否站的下(小明的占地区域内有没有障碍物),如果站的下就入队,入队时判断一下小明身材的情况。判断的时候有个小优化,及当小明占地是 1×11×1 的时候可以不用判断小明原地不动的情况,此时站着不动是无意义的举措,因为无论怎样走都不会有障碍物遮挡他。重点:第一次做这个题的时候用的是存入队列的值用的三种不同的情况,但是因为是直接改成到达时间不太正确,只能得37分。类似于求最短路径的问题,可以使用 bfs 讨论。
2024-05-13 19:28:41
146
1
原创 [NOIP2001 普及组] 求先序排列——关于二叉树的dfs
从而问题就变成求1.中序遍历ACGD,后序遍历CDGA的树 2.中序遍历HZKX,后序遍历HXKZ的树;那么我们找到中序遍历中的B,由这种遍历的性质,可将中序遍历分为ACGD和HZKX两棵子树,首先,一点基本常识,给你一个后序遍历,那么最后一个就是根(如ABCD,则根为D)。接着递归,按照原先方法,找到1.子根A,再分为两棵子树2.子根Z,再分为两棵子树。中序ACGDBHZKX,后序CDGAHXKZB,首先可找到主根B;就按这样一直做下去(先输出根,再递归);那么我们来看这道题方法:(示例)
2024-05-11 17:37:53
435
1
原创 [蓝桥杯 2013 国 C] 危险系数——关于图的dfs
解题思路:可以使用 dfs求解,求出 u 到 v 间的每一条路径,将路径总数统计,并将被经过的点被经过总数加一。如果一个点被经过的次数与总路径条数相等,那么这一个点就是 u 和 v 的关键点,并且最后的减一是减去起点。
2024-05-11 12:12:56
112
1
原创 [蓝桥杯 2013 国 AC] 网络寻路(和图有一点关系的问题)
对于图来说,每个节点都有一个度,当我们选择一条路径作为中间路径时,这时候我们路径两边的度所连的点的个数(不包括路径)的度则是原先的度的个数减一,而可以形成完整路径的个数则是:中间路径节点度个数减一相乘再乘一个2,得到最终结果。对于图的度的输入处理可以用数组。
2024-05-11 11:15:18
184
1
原创 DFS题目——取数游戏
但其中比较微妙的是在于它的剪枝:因为当你遍历到一个点后,这个点它上面的好几行就不需要再去遍历了,因为上面的这些点肯定在同一行的某一个点遍历过了就不需要了,这样剪枝就可以不会超时(不过这个做法还是非常的暴力)我的做法是通过遍历每一个点出现的开始的位置,进行dfs。
2024-05-08 20:20:15
142
1
原创 蓝桥杯十五届省赛真题——数字接龙
2. 对于路径经过的棋盘格子,按照经过的格子顺序,上面的数字组成的序列要满足:0, 1, 2, . . . , K − 1, 0, 1, 2, . . . , K − 1, 0, 1, 2 . . .。小蓝最近迷上了一款名为《数字接龙》的迷宫游戏,游戏在一个大小为N × N 的格子棋盘上展开,其中每一个格子处都有着一个 0 . . . K − 1 之间的整数。4. 路径中不可以出现交叉的线路。例如之前有从 (0, 0) 移动到 (1, 1),那么再从 (1, 0) 移动到 (0, 1) 线路就会交叉。
2024-05-08 14:13:42
275
3
原创 c++对于使用sort函数对结构体进行排序
对结构体排序可以自己写一个bool类型的cmp函数,写在sort函数上。如果第一个不相等,就先排第一个数的顺序。如果第一个数都相等,就按第二个数排序。例题:Atcoder348—C。其中正是运用了cmp进行排序。
2024-04-15 19:55:38
165
1
原创 “华为杯“华南理工大学程序设计竞赛(同步赛)题解A——二分的深入理解
最后二分返回的是最小的可以满足第几个靠近x的mid的值,正是因为出现了最小的mid的值才会恰好刚刚出现x距离靠近的哪一个,最后返回的就是daan。lower_bound() :寻找>=x的第一个元素的位置。upper_bound():寻找>x的第一个元素的位置。每一次二分通过查找mid的值去确定在关于x加减mid的绝对值的范围内会在a数组中出现几个。使用到函数返回对应元素迭代器的位置,找不到则返回尾迭代器。
2024-04-15 09:27:59
477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人