- 博客(18)
- 收藏
- 关注
原创 25钉耙春季赛02-1003学数数导致的-组合计数问题(在官方题解上的补充)
在此之后,我们从前往后按顺序遍历,找出当前遍历位置之前的最后一个0的位置,记作 last0。若当前找到的a[i]第一次出现是在 last0 前面,则表示结构成立,再加上当前位置后面的数值个数即可。因本题要找的子序列的复杂性,以及计数的时间空间多重限制,本题需要探索出一条高效的计数路径。思路为先确定(p,0,p)的结构,再加上第二个p后面的,不同数值的个数,再对使用过的p进行标注,防止重复叠加。对于每组数据,输出一行一个自然数,表示符合题意的数对对数。数对 (p,q)使得数列中存在子序列 p,0,p,q。
2025-06-25 22:16:23
492
原创 25钉耙春季赛01-1002船长-概率动态规划应用(在官方题解上的补充)
因为这里的分组采用整数右移的方式来进行,0(0)右移为0,1(01)右移为0,2(10)右移为1,3(11)右移为1。竞选会持续若干轮,每轮会在仍在竞选的水手中大致筛选掉其中的一半,直至仍在竞选的水手只剩下一名,这一名水手就是最后的船长。“^”为异或运算符,二进制按位执行,相同为0,不同为1.因此数学意义为,x为偶数->x+1,x为奇数->x-1。现在,染染想要知道,如果他和其它水手的较量一定赢,而其他水手之间的较量双方赢的概率相等(即都是。}),分别表示参与竞选的水手数量和会对染染造成威胁的水手数量。
2025-06-25 20:00:37
1342
原创 PTA公路村村通(kruskal算法)
输入数据包括城镇数目正整数 n(≤1000)和候选道路数目 m(≤3n);随后的 m 行对应 m 条道路,每行给出 3 个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从 1 到 n 编号。现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出 −1,表示需要建设更多公路。
2025-05-29 15:56:36
346
原创 PTA寻宝图(dfs)
给定一幅地图,其中有水域,有陆地。被水域完全环绕的陆地是岛屿。有些岛屿上埋藏有宝藏,这些有宝藏的点也被标记出来了。本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿。),是地图的尺寸,表示地图由 N 行 M 列格子构成。随后 N 行,每行给出 M 位个位数,其中0表示水域,1表示陆地,2-9表示宝藏。注意:两个格子共享一条边时,才是“相邻”的。逐点遍历进行向四周的深度搜索,并将走过的点更改,防止重复叠加。在一行中输出 2 个整数,分别是岛屿的总数量和有宝藏的岛屿的数量。
2025-05-29 15:06:59
611
原创 PTA地下迷宫探索
题题目描述:地地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房连房、街连街、村连村的地下工事,如下图所示。我我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代,对多数人来说,探索地下通道或许只是一种娱乐或者益智的游戏。本实验案例以探索地下通道迷宫作为容。假假设有一个地下通道迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点?输输入格式。
2025-05-28 17:16:40
413
原创 PTA还原二叉树(根据前序和中序)
输入首先给出正整数 n(≤50),为树中结点总数。随后 2 行先后给出前序和中序遍历序列,均是长度为 n 的不包含重复英文字母(区别大小写)的字符串。给定一棵二叉树的前序遍历序列和中序遍历序列,要求计算该二叉树的高度。输出为一个整数,即该二叉树的高度。
2025-05-22 13:06:42
420
原创 25钉耙春季赛10-1006小塔的梦境迷宫-巧妙转化至Dijkstra算法解决(在官方题解上的扩展)
本文探讨了一个基于Dijkstra算法的最短路问题,其核心挑战在于如何在到达终点时确保步数是3的倍数。通过将每个节点拆分为三个状态(步数模3余数分别为0、1、2),并引入辅助节点来表示瞬移网络,成功地将瞬移操作转化为进入和离开瞬移网络的两步操作。文章详细描述了如何构建状态节点之间的边,包括普通道路和瞬移操作,并最终通过Dijkstra算法求解最短路。代码实现部分展示了如何通过优先队列进行节点拓展,并验证了算法的有效性。
2025-05-18 13:46:02
1451
原创 PTA表达式转化(栈问题)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
2025-05-17 13:15:27
286
原创 map的降序输出
一般map中都会按照key的大小升序排列,那当我们需要按照key的降序输出时应该如何解决?那么本篇来介绍两种可以让map按照key值降序输出的方法。直接改变定义:map<int, double, greater<int>> q;完成降序排序,即可正常输出获取。q.rbegin() 即map最后一个元素(最大key),注意其中获取的是指针类型,访问其中的数据用“->”。q.rend()即map中第一个元素的前一位。改变访问方式,从后往前访问。
2025-05-14 17:14:13
478
原创 PTA约瑟夫问题
求解约瑟夫(Joseph)问题。有n个小孩围成一圈,给他们从1开始依次编号,从编号为1的小孩开始报数,数到第m个小孩出列,然后从出列的下一个小孩重新开始报数,数到第m个小孩又出列,…,如此反复直到所有的小孩全部出列为止,求整个出列序列。如当n=6,m=5时的出列序列是5,4,6,2,3,1。
2025-05-14 16:17:31
387
原创 PTA单链表基本操作
请编写程序实现单链表插入、删除结点等基本算法。给定一个单链表和一系列插入、删除结点的操作序列,输出实施上述操作后的链表。单链表数据域值为整数。
2025-05-13 18:48:27
349
原创 PTA单链表的创建,遍历与销毁
从键盘输入任意多个正整数,输入以-1结束。逆序输出这些整数(不包括-1)。提示:1、逆序创建单链表。结点数据域是整型数。每输入一个整数,向链表中插入一个结点。当输入-1时结束链表的创建。2、遍历链表,输出结点数据域的值。3、遍历完成后,要求销毁该链表。任意多的正整数,输入序列以-1结束。逆序输出这些整数(不包括-1)。在这里给出一组输入。例如:输出样例:在这里给出相应的输出。例如:
2025-05-13 18:11:08
462
原创 PTA浪漫侧影
本篇是作者根据Maxwell2005老师的代码写的一些学习心得以及总结。“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子,叫“右视图”;女生的侧影是从她左侧看过去的样子,叫“左视图”。520 这个日子还在打比赛的你,也就抱着一棵二叉树左看看右看看了……我们将二叉树的“侧影”定义为从一侧能看到的所有结点从上到下形成的序列。例如下图这棵二叉树,其右视图就是 { 1, 2, 3, 4, 5 },左视图就是 { 1, 6, 7, 8, 5 }。
2025-04-17 14:46:26
676
原创 unordered_set用法介绍
unordered_set是C++ STL(标准模板库)中的一个数据容器,基于哈希表实现,用于存储不重复元素。
2025-04-13 17:39:41
589
原创 PTA彩虹瓶—出栈序列的合法性—出入栈问题
本篇主要讲栈的一种基础题目类型——出栈合法性。解法也都是用栈stack来写,下面是本人对这个问题的两道PTA很类似的题的解析和ac代码,希望可以对大家有帮助(* ̄︶ ̄)~题目给出最大栈容量,总元素个数,需要判断的出栈序列的合法性的个数,最后给出出栈序列。要求判断已知入栈的顺序下,各出栈序列是否可以真的实现。(我认为只要大家理解了入栈遍历中的while 以及 if else,并且记住最后的栈while的分别的目的以及相应顺序,一切都迎刃而解了。大家看下面题解的时候可以注意~
2025-04-05 00:42:04
969
原创 25钉耙春季赛4-1006进步-树状数组
常规来看是一个前缀和问题,但是看到范围就会发现一定是会超,每次更改一个值就会引起在这之后以及这个位置的所有前缀和变动。因此,机会给到了树状数组。一个可以解决大部分区间修改以及存储的数据结构。树状数组本人也是折腾了很久,找了很多资料,终于找到了一个非常伟大的树状数组介绍视频(o(╥﹏╥)o)大家可以点进去。本人也是细细品了两遍。
2025-04-03 18:49:08
360
原创 PTA个位数统计
具体可以参考weixin_43107805这位大佬详细标出了int,long,long long的范围。1000位是远远超出的。每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。本人在此之前并没有多想(..),导致疑惑了很久。对 N 中每一种不同的个位数字,以。的格式在一行中输出该位数字。及其在 N 中出现的次数。
2025-04-03 10:18:23
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅