- 博客(131)
- 收藏
- 关注
原创 用Prim算法求解最小生成树:代码实现与分析
Prim算法是一种贪心算法,用于在加权无向连通图中找到一棵最小生成树。其核心思想是从图中的任意一个顶点开始,逐步扩展生成树,每次选择与当前生成树相连的边中权重最小的边,将对应的顶点加入生成树,直到所有顶点都被包含在生成树中。g[N][N]:二维数组,用于存储图的邻接矩阵,g[i][j]表示顶点i和顶点j之间的边的权重。w[N]:数组,用于记录每个顶点到当前生成树的最小距离。pr[N]:数组,用于记录每个顶点在最小生成树中的前驱节点。n:表示图中顶点的数量。m:表示图中边的数量。sum。
2025-02-18 23:57:29
272
原创 图的邻接表实现代解析【数据结构】
define N105:引入标准输入输出流库,用于程序中的输入输出操作。:定义一个宏N,表示图中顶点的最大数量为 105。:使用标准命名空间,方便后续使用标准库中的函数和对象。int date;}edg;char date;}vhead;//存点int n, m;//点数,边数}Adj;edg结构体:表示图中的边节点,包含一个整数date用于存储边所指向的顶点编号,以及一个指向下一个边节点的指针next。vhead结构体:表示图中的顶点节点,包含一个字符date。
2025-02-13 01:59:52
662
原创 树链剖分【树上差分】【模版】+洛谷P3128 [USACO15DEC] Max Flow P
Farmer John has installed a new system of N−1N-1N−1 pipes to transport milk between the NNN stalls in his barn (2≤N≤50,0002 \leq N \leq 50,0002≤N≤50,000), conveniently numbered 1…N1 \ldots N1…N. Each pipe connects a pair of stalls, and all stalls are conne
2025-02-12 20:50:44
650
原创 【数据结构】哈夫曼树以及编码 代码实现
在数据压缩、编码等领域,哈夫曼树有着广泛的应用。本文将通过一段C++ 代码来详细阐述哈夫曼树的构建、节点选择以及编码生成的过程。
2025-02-07 10:00:55
276
原创 # 二叉树的遍历与创建【先序,中序,后序,层序】
二叉树节点结构binodeint date;这里定义了二叉树的节点,每个节点包含一个整数值date用于存储数据,以及两个指针lc和rc分别指向左孩子和右孩子节点。队列节点结构lstqu和队列结构qq}lstqu;}qq;lstqu是队列的节点结构,其中date存放二叉树节点指针,next指向下一个队列节点。qq定义了队列,包含队头指针front和队尾指针rear。通过对这段代码的详细解析,我们深入了解了二叉树的遍历和创建在 C++ 中的实现方法。
2025-02-05 10:15:23
241
原创 数据结构【链式队列】
int date;}lstqu;}qq;qq* Q;这里定义了两个结构体,lstqu用于表示队列中的节点,每个节点包含一个数据域date和一个指向下一个节点的指针next。qq结构体用于表示整个队列,包含队头指针front和队尾指针rear。通过上述代码实现,我们成功构建了一个基于链式存储结构的队列,并通过测试函数验证了其基本操作的正确性。链式存储结构的队列在处理动态数据时具有灵活性,避免了顺序存储结构可能出现的溢出问题。
2025-02-04 09:35:58
964
原创 数据结构【链栈】
int val;// 当前链表值// 链表后面的值域(地址)} lst;这里定义了一个名为lst的结构体,用于表示链表的节点。每个节点包含一个整数值val和一个指向下一个节点的指针next。int date;// 存放数据// 指针域} lststack;定义了一个名为lststack的结构体,用于表示栈的节点。每个节点包含一个整数值date和一个指向下一个节点的指针next。通过本文的介绍,我们学习了如何使用 C++ 实现单链表和栈的基本操作。
2025-02-01 16:11:01
1063
原创 数据结构【单链表操作大全详解】【c语言版】(只有输入输出为了方便用的c++)
/单链表int val;//当前链表值//链表后面的值域(地址)}lst;这里定义了一个单链表节点的结构体lst。val用于存储节点的数据,next是一个指针,指向链表中的下一个节点。通过这种方式,节点之间可以串联起来形成链表。定义了一个常量N,虽然在当前代码中没有直接使用,但可以作为链表最大长度的一个限制,在实际应用中可能会用于内存分配或边界检查等。通过以上对单链表各种操作的实现,我们可以看到单链表在数据存储和操作上的灵活性。
2025-01-31 23:09:54
989
原创 程序自动分析【离散化】
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设x1x2x3⋯代表程序中出现的变量,给定n个形如xixj或xixj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。
2024-11-09 18:56:01
721
原创 C. Watering an Array
接下来就想一开始数组不全是0,我们只需找到一个分界线就行,这个分界线是什么什么即可,换句话说就是操作多少次1再操作2,然后清零之后就可以交替操作了,就做完了,至于操作1的次数范围是多少呢我们可以分析一下,最少是0,那么最多呢,最多其实是2。其实我们可以先假设一开始数组里面全是0,那么最优的策略一定假设操作1,2交替进行,为什么这么说呢,因为对于b数组来说,每次选择一个数使得这个a数组的前bi的数加1,把后面的值加好,一定会导致前面原本对齐的数打乱,所以策略行不通。
2024-10-13 14:32:49
226
原创 记忆化搜索
数字金字塔由n行整数组成,第i1≤i≤n行有i个数字,一个示例如下。现在你在金字塔的顶部(第一行),你希望走到金字塔的底部(第n行),每一步你只能走向当前所在位置的左下方的数字或者右下方的数字。同时作为一个强大的小朋友,你可以选择金字塔中的不多于k个数字让他们成为原来的3倍。你会收集你路上经过的所有位置上的数字,最后的得分即为收集的数字之和,求最大得分。
2024-10-04 22:28:46
834
原创 Card Game【map】
两名玩家正在玩在线纸牌游戏。游戏使用一副32张牌进行。每张牌都有花色和数字。有四种花色:梅花、方块、红心和黑桃。用字符CDH和S分别表示它们。共有 8 种数字,按递增顺序为23456789。每张牌由两个字母表示:其等级和花色。例如,红心 8 可以表示为8H。在游戏开始时,会选择一种花色作为王牌花色。在每一轮中,玩家的操作如下:第一个玩家在桌子上放一张牌,第二个玩家必须用自己的一张牌打败这张牌。之后,两张牌都被移动到弃牌堆中。
2024-07-24 21:10:07
1620
原创 P2008 大朋友的数字【动态规划】
在 NOIP2013 的赛场上,常神牛华丽丽的手残了,小朋友的数字一题只得了10分。于是,他要恶搞一下这道题。
2024-07-18 23:21:55
853
原创 H. Beppa and SwerChat【双指针】
思路分析:运用双指针从后往前扫一遍,两次分别记作数组a,b,分别使用双指针i和j来扫,如果一样就往前,如果不一样,i–,ans++
2024-07-16 20:04:59
229
原创 E. Novice‘s Mistake
思路分析:我们通过分析题目情况,发现其实是一个美剧暴力的题目,而且下面的取值是与n的位数的个数是有关系的,我们需要先得到n的个数,记作num,我们暂且把答案记作a b我们发现答案是n。(n的位数)-答案的位数。
2024-07-15 01:12:01
381
原创 C. Alternating Subsequence[双指针,贪心]
思路分析:题目俩要求,最长,值最大,异号,保证异号的情况是找到最长而且尽可能大,其实很容易想到,一开始先把第一个数单独放进去,保证不浪费任何一个元素,然后往下搜,如果异号直接放进去,如果同号,取最大继续搜。
2024-07-15 00:28:58
271
原创 洛谷P1498 南蛮图腾[递归好题]
自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图腾,于是他找上了你的爷爷的爷爷的爷爷的爷爷……帮忙,作为一个好孙子的孙子的孙子的孙子……你能做到吗?
2024-07-10 22:34:10
647
原创 Make It Permutation
给定一个长为n的序列a,你可以进行以下两个操作:删除a中的任意一个数字,花费为c。往a的任意位置插入一个数字,花费为d。求最后得到一个任意长度的排列的最小花费。注:最终排列长度不能为0,但操作中序列长度可以为0。
2024-06-06 14:14:14
1050
原创 因子区间[牛客周赛44]
我们可以发现125是因子个数的极限了,所以我们可以用二维数组来维护第几个数有几个因子,然后用前缀和算出来每个区间合法个数,通过一个排列和从num里面选2个 ,c num 2 来计算即可。
2024-06-05 22:09:20
256
原创 E.小绿的房子[牛客周赛45][二维vector存图巧解]
B市的地图是一棵有nn个节点的树,每个节点上都有房子出售。为了方便周末一起玩,小绿希望他的房子一定不要离小棕的太远。不过为了给小棕一个惊喜,小绿没有去找小棕问他买在哪里,他希望能直接在图上找到一些点,这些点满足距离其他任意点的距离都不超过2。这样只要他这这些点上买房,那么无论小棕的房子在哪里,他们之间的距离都不会超过2了。那么就说明这个点能够在2的距离内把所有的点都连上,如果实在不理解,可以把我注释掉的内容恢复然后直接输入看看寻找的过程,这样就会好懂一些.2.和当前点连着点连接的点的条数。
2024-06-05 08:43:42
351
原创 Number of Pairs[二分查找函数]
给出一个由整数组成的数组a,求一对整数ij1≤ij≤n)满足l≤aiaj≤r的数量。在输入的第一行为一个整数t1≤t≤104),为数据组数。接下来对于每组数据,第一行为三个整数nlr1≤n≤2×1051≤l≤r≤109),为数组的长度和上文中的lr。第二行有n个整数a1a2an1≤ai≤109)表示数组a。保证对于所有组数据∑n≤2×105。
2024-06-03 18:49:12
840
原创 洛谷 逛画展 【双指针】
博览馆正在展出由世上最佳的m位画家所画的图画。游客在购买门票时必须说明两个数字,a和b,代表他要看展览中的第a幅至第b幅画(包含ab)之间的所有图画,而门票的价钱就是一张图画一元。Sept 希望入场后可以看到所有名师的图画。当然,他想最小化购买门票的价格。请求出他购买门票时应选择的ab,数据保证一定有解。若存在多组解,a。
2024-05-30 20:08:28
910
原创 E. Binary Deque[双指针好思维题]
有多组数据。每组数据给出n个数,每个数为0或1。你可以选择从两边删数,求至少删几个数才可以使剩下的数总和为s。如果不能达到s,则输出−1。
2024-05-29 21:51:49
1171
原创 F. Longest Strike[双指针详解]
给你一个长度为n的序列a和一个整数k,你要求一个区间lrx∈lrxakr−l无解输出-1。例如,a11111213131414k2l12r14121l13r14132142l11r11112满足条件且r−l最大的区间是l13r14。
2024-05-29 20:08:11
875
原创 Circular Local MiniMax
给你 n 个整数 a1, a2, an。问有没有可能将它们排列在一个圆上,使每个数字严格地大于其相邻的两个数字或严格地小于其相邻的两个数。
2024-05-24 09:02:07
2122
原创 Friends and the Restaurant
一群 n 朋友决定去一家餐馆吃饭。每个朋友计划点 xi 个布尔的餐,总共有 yi个布尔朋友们决定分几天去餐厅用餐。每天,至少有两个不小于小组中的朋友将在餐厅消费的布尔数。换句话说,组中所有 x &;i 值的总和不得超过组中 y i 值的总和。朋友们最多可以去餐厅多少天?例如,假设有 n = 6 个朋友,其中 x =[ 8, 3, 9, 2, 4, 5 ], y =[ 5, 3, 1, 4, 5, 10]。那么。
2024-05-22 21:25:09
333
原创 Districts Connection
您不希望出现这种情况,因此您的任务是建造 n-1 条双向道路,使所有地区都可以相互到达(可能的话,使用中间地区),并且每对。你是这座城市的市长,想要修建 n-1 条双向道路来连接所有的区(两个区可以直接相连,也可以通过其他相连的区来连接)。最初,没有任何区彼此相连。如果属于同一帮派的两个区被一条道路直接**连接起来,这个帮派就会造反。不同的帮派**,或者确定不可能建造 n-1 条道路来满足所有条件。其实只要是有俩帮派就够了,把一帮派连到的二帮派上,其他的全连在1上即可。
2024-05-21 18:24:20
153
原创 G. Fall Down
就是一个竖向的DFS,但是有一点要注意要倒着看,即从下往上看,因为如果出现** 上下相连的情况,上面的*会被下边这个给堵住所以我们要倒着看。所有石子都会往下掉,直到碰到地板(最下面一行)、障碍物或其他已经无法移动的石子。(换句话说,所有的石子只要还能往下掉,就会一直往下掉)。)–分别是网格的行数和列数。这些字符分别是’.‘、’*‘或’o’–空格、石头或障碍物。第一行包含一个整数t - 测试用例的数量。针对每个测试用例,输出一个包含 n 行和 m 列的网格,显示处理结果。得到的网格是什么样的?
2024-05-21 17:15:55
583
原创 Long Multiplication
不难发现如果让俩数乘积最大化应该让俩数的差值最小化,我们把大的数的后面的大的部分和小的数的后面的小的部分交换即可。你的任务是使用上述操作的任意次数,最大化 x和 y 的乘积。如果有多个答案,请打印任意一个。例如,如果 x=73和 y=31中的 2 个位数互换,就可以得到 x=71 和 y=33。您可以执行以下操作任意多次(可能为零):交换 x中的 i个位数和 y 中的 i个位数。给你两个长度相同的整数 x 和 y ,由 1到 9 之间的数字组成。
2024-05-21 11:23:40
228
原创 Stand-up Comedian
Eve 是个单口相声新手。她的第一场表演聚集了2个观众:Alice 和 Bob。Eve 准备了a1a2a3a4个相声表演节目。ai表示第i类相声的数目,每类的的特征如下:Alice 和 Bob 都喜欢这类相声。Alice 喜欢,Bob 不喜欢。Bob 喜欢,Alice 不喜欢。Alice 和 Bob 都不喜欢这类相声。一开始,两位观众的心情0。当一位观众听到他喜欢的相声表演时心情会1,当听到的是自己不喜欢的相声时,心情。当某位观众心情0。
2024-05-20 20:40:49
1102
原创 B. Fancy Coins
直接贪心,先把有的钱数的大的值先花了再说,但是有一点要注意,花面值为1的钱的时候不要直接花去,要考虑不用1的话可能话大的用的更少,举个例子,比如,花完了大的和小的还剩2,但大的是3,这样比如就少话一个1了,这样只要一个3就可以,否则就要两个1了。(m-na)/b+1 是队伍数(先上取整)*b,如果
2024-05-20 18:07:39
412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人