- 博客(22)
- 收藏
- 关注
原创 buctoj_算法设计与分析(5)
Ural大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 HiHi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。
2025-04-14 22:07:30
787
2
原创 buctoj_算法设计与分析(4)
本题看似很复杂,其实就是在重复进行一个操作而已,看看需要多少次这样的操作可以达到目标状态(模拟一下即可)因为有可能会不存在答案,所以需要设置个深度,防止陷入死循环, 我这里设置的是2 * n 次。1 ~ 7 这个时间段 : 我们要满足 s[24] - s[16 + i] + s[i] >= f[i](3)当 i, i + 1 的次方一个小于要求值, 一个大于要求值, 答案为两者之间的一个值。(1)i, i + 1, 如果其中的任意一个达到了本题的要求值,直接输出,结束循环。从1开始寻找, 每次看两个点。
2025-03-31 16:08:53
1137
原创 buctoj _ 算法设计与分析(3)
本质上就是一个贪心算法,现在要找最大边中的最小值,我们可以先将所有边排序,然后按照边的权值从小到大逐一寻找。本题只要考虑最大值, 所以要想让最大值最小,我们可以将在这个边前 的所有边连通, 这个可以用并查集实现。我们分别将三个组合的每个组合的各自位置记录下来,虽然位置不连续,但是每个组合的元素在我们装位置的数组中的下标是连续的,我们利用这个方法实现下标的映射。解题技巧:每个仓库的储藏量为正值,能够储存量为负值,加起来,只要当所有连通块的和为为非正数时,即可。利用堆栈来实现式子的计算,注意优先级。
2025-03-25 12:16:06
855
1
原创 寒假(3)
给定 N 张卡牌。在第 i 张卡牌上(1≤i≤N)写着一个整数 xi。要从这些 N 张牌中选择一张或多张,使所选牌上的整数的平均值正好是 A。一共有多少种选择方法?两种选择方法不同,当且仅当选出的卡牌中,至少有一张卡牌没有同时出现在两种选择方法中。
2025-01-16 23:05:22
880
原创 寒假(3)
从Ekaterinburg到Sverdlovsk的火车线路上有若干个站点。这条线路可以近似的表示为一条线段,火车站就是线段上的点。线路始于Ekaterinburg,终于Sverdlovsk。Ekaterinburg被标号为1,Sverdlovsk被标号为n。(n为整条线路上的站点数)线路上的任意两个站点间的直达票价是由它们间的距离决定的,票价根据以下规则制定:X为两站的距离 价格如果两站的间距超过L3,则无直达车票。
2025-01-15 21:51:17
779
原创 寒假(2)
定义一个函数check(n,d),让它返回一个布尔值。如果数字d在正整数n的某位中出现则送回true,否则送回false。例如check(325719,3)==true。
2025-01-14 20:06:22
940
原创 寒假(1)
输入一个不超过100000位的十六进制数,请转换成八进制数。注:十六进制数中,字母0~9还对应表示数字0~9,字母“A”(大写)表示10,“B”表示11,…,“F”表示15。比如:十六进制数A10B表示的10进制数是:10×163+1×162+0×161+11×160=41227。转换成的八进制数是:120413,因为1×85+2×84+0×83+4×82+1×81+3×80=41227。
2025-01-13 23:17:12
964
原创 最短路径
在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短路径的算法。可将迪杰斯特拉算法描述如下:设辅助向量u[0…n-1]、shortest[0…n-1]和path[0…n-1];u[i]为1表示从v0到vi的最短路径已经求出,为0表示尚未求出;shortest[i]记录目前已知的从v0到vi的较短路径的长度;
2025-01-07 00:36:35
512
原创 静态链表存储二叉树
用数组模拟实现链表的功能,即静态链表,也可以用来存储二叉树。请编写程序,用非递归遍历算法输出静态链表存储前中后三种遍历结果。本题为附加代码模式,以下代码为自动附加在同学们提交的代码后面。return 0;
2024-12-30 18:48:49
738
原创 哈夫曼树
在通讯领域,经常需要将需要传送的文字转换成由二进制字符组成的字符串。在实际应用中,由于总是希望被传送的内容总长尽可能的短,如果对每个字符设计长度不等的编码,且让内容中出现次数较多的字符采用尽可能短的编码,则整个内容的总长便可以减少。另外,需要保证任何一个字符的编码都不是另一个字符的编码前缀,这种编码成为前缀编码。而赫夫曼编码就是一种二进制前缀编码.在本题中,读入n个字符所对应的权值,编程实现生成赫夫曼编码,并依次输出计算出的每一个赫夫曼编码。接下来,读入一段二进制字符串,请将其解码输出对应的字母。
2024-12-30 17:09:02
243
原创 二叉树加和操作
给定一个二叉树,请编写代码,遍历修改每个节点的value值,使其值为以它为根结点的子树的所有节点的value值之和,如下右图所示6=2+1+3,13=7+6,23=4+2+7+1+3+6。输入为下左图形式的树,输出为下右图形式的树。
2024-12-30 12:18:05
286
原创 二叉树 例题
用二叉树的带虚结点表示的前序遍历序可以唯一的确定一棵二叉树,请用非递归算法实现二叉树的中序遍历。本题为附加代码模式,以下代码为自动附加在同学们提交的代码后面。// 根据带空节点的前序遍历字符串构造二叉树// 中序遍历递归算法// 中序遍历非递归算法return 0;
2024-12-30 01:10:05
603
原创 进阶实验6-3.4:拯救007(升级版)
在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫。设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。
2024-12-30 00:15:35
281
原创 【无标题】
一个CPU处理的任务队列,并不总是按照时间顺序处理,有些任务有着更高的优先级。比如:一个任务需要对核反应堆进行调度,另一个任务是打印一个文档。针对这种需要处理优先级的任务选择执行场景,需要设计一种数据结构,高效率实现以下两种操作,从集合中定位并删除最大值(执行任务),在集合中插入新元素(新增任务)。堆就是这样一种数据结构。堆是一种完全二叉树:0号节点为根结点,i号的左子为2*i+1,右子为2*i+2。按照内部元素的大小关系,堆可以分为大顶堆和小顶堆两种。
2024-12-11 14:24:58
1909
原创 B数 及 哈希表
由于根结点最少1个关键字,其余非叶结点最少⌈m/2⌉-1个关键字,所以第一层1个结点,第二层2个结点,第三层2⌈m/2⌉个结点..第h+1层即叶结点层至少有2(⌈m/2⌉)^(h-1)个结点,由于叶结点有n+1个(查找失败个数),所以n+1≥2(⌈m/2⌉)^(h-1),因此有。(i=1,2,...,n)为指向子树根结点的指针,且指针所指子树中所有结点的关键字均小于,所指子树中所有结点的关键字均大于,n(⌈m/2⌉-1≤n≤m-1)为结点中关键字的个数。注意这是一个高度为3的B树,B树高度不算叶结点。
2024-12-04 12:53:57
1935
原创 数据结构 (二插搜索树BST,平衡二叉树搜索树AVL)
给定一个序列,使用该序列生成二叉排序树(也叫二叉搜索树,BST),然后以本题规定方法输出该二叉排序树。例:以第一个数字为根节点,然后将后面的数字依输入次序逐个添加至该树中,得到一个二叉排序树,如下图所示。然后先序遍历上面这个树,并按行输出数字。其中每个子节点的输出前,需要相较于其父节点前多四个普通空格。当某个节点为叶子节点(即无子节点),则该节点的左右叶子节点均不用输出。而当某个节点仅有左叶子节点或右叶子节点时,另一个空缺的子节点用#占位。
2024-11-27 12:10:27
894
原创 数据结构作业(图)
n-1],cost[i]表示顶点vi到U的最短边的长度,adj[i]表示顶点vi到U的最短边在U中的邻接点的下标;输入包括多组测试数据,每组测试数据首先是正整数n和m,表示有向图有n个节点(编号从1到n),m条有向边,接下来是m行,每行为两个正整数u和v,用空格隔开,表示从节点u到节点v有一条有向边,u和v都大于等于1且小于等于n。下图是一个有向无环图,节点内的数字表示该节点的序号,节点之间的连接线表示节点之间的连接方式,连接线上方的黑色数字表示该连接线的权重。接下来是n行,每行为n个空格隔开的非负整数。
2024-11-11 21:28:43
1467
原创 codeforces练习(Educational codeforces Round 171 (Rated for Div2))
这道题为了使总和最小,可以这么理解,先求出总和,然后再减去可以免单的值,为了使和最小,所以尽可能减去大值, 最好的方法就是一个小值和一个大值一起(用最小的值换取最大的值),然后从后往前遍历,用一个指针指向前方值,如果后指针对应的是1,就减去,并且前指针向后移(代表前后匹配),如果是0,前指针向前移,因为为了买到当天的东西,必须需要后一天来满足,所以就没有必要浪费前面的小值,可以留给后面的大值匹配。综上所述,cf 在我的观点看来,十分注重思维,注意题目的灵活性,多多练习,迅速找出题目的规律!
2024-11-06 17:56:14
708
原创 图论—运用 (拯救007)
在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。给定池中分布的鳄鱼的坐标、以及007一次能跳跃的最大距离,你需要告诉他是否有可能逃出生天。随后 N 行,每行给出两个整数,代表一条鳄鱼的 (x,y ) 坐标。
2024-11-06 12:28:12
324
1
原创 无向图的连通分量和生成树
以后的n行中每行有n个用空格隔开的整数0或1,对于第i行的第j个0或1,1表示第i个顶点和第j个顶点有直接连接,0表示没有直接连接。在本题中,读入一个无向图的邻接矩阵(即数组表示),建立无向图并按照以上描述中的算法建立无向图的生成森林。对于非连通图,则需从多个顶点出发进行搜索,而每一次从一个新的起始点出发进行搜索的过程中得到的顶点访问序列恰为其各个连通分量中的顶点集。对于非连通图,每个连通分量中的顶点集,和遍历时走过的边一起构成若干棵生成树,这些连通分量的生成树组成非连通图的生成森林。
2024-11-06 12:23:53
300
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅