自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 贪心之交换瓶子

在这个程序中,我们的目标是将数组中的元素调整到与它们的下标相匹配的位置,并计算需要进行的最小交换次数。我们可以使用贪心算法来逐步地找到不匹配的元素,并将其交换到正确的位置。这个贪心策略的正确性在于,每一次交换都会将一个不匹配的元素放置到正确的位置上,且不会破坏其他位置的正确性。贪心算法是一种基于局部最优选择的策略,通过每一步的最优选择来达到全局最优解。比如有5个瓶子:2 1 3 5 4,要求每次拿起2个瓶子,交换它们的位置。第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。你可以通过编程来解决。

2024-02-23 22:08:25 361 1

原创 计数器的改良

例如:如果小 A 以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为 6 的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-…”,而如果小 B 以“剪刀-石头-布-斯波克-蜥蜴人”长度为 5 的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-…然后分别读入 A、B 两队队员的手势。数组存储 B 队员所出的手势,数组元素为 0 到 4 的整数,表示分别出剪刀、石头、布、蜥蜴、斯波克。

2024-02-22 21:55:59 364 1

原创 最小生成树之模板

接下来 M 行每行包含三个整数 Xi​,Yi​,Zi​,表示有一条长度为 Zi​ 的无向边连接结点 Xi​,Yi​。最后,判断生成树的边数是否等于节点数减1,如果不相等则输出"orz",表示图不连通;接下来,遍历排序后的边,如果边的起点和终点不在同一个集合中,则将它们合并,并将边的权值加到权值上,并将计数加1。如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。然后,依次读取每条边的起点、终点和权值,并将它们保存在结构体数组中。如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出。

2024-02-21 21:09:44 356

原创 医院设置问题

其中,圈中的数字表示结点中居民的人口。如上图中,若医院建在1 处,则距离和 =4+12+2×20+2×40=136=4+12+2\times20+2\times40=136=4+12+2×20+2×40=136;接下来的 nnn 行每行描述了一个结点的状况,包含三个整数 w,u,vw, u, vw,u,v,其中 www 为居民人口数,uuu 为左链接(为 000 表示无链接),vvv 为右链接(为 000 表示无链接)。这个题是一个树形结构的遍历和计算路径值的功能,并求出最小路径值的结果。

2024-02-20 21:46:51 374 1

原创 感情培养问题

该程序使用了全局变量来存储每个物品的a和b的值,以及目前已经放入背包的物品的a和b的值,因此程序比较简单,但由于使用了DFS,时间复杂度会比较高。我们需要将n个物品放入一个容量为v的背包中,每个物品有两个价值,分别为a和b,我们需要让放入背包的物品的a和b之差最小。现在,他们对对方的好感值都为0,小明有N件事可以干,每件事可以增加他对小红的好感Ai点,并且增加小红对他的好感Bi点。他们以后的生活将取决于两人的好感值之差的绝对值,这个值越小,他们的生活将越幸福。定义两人的亲密程度为两人的好感值之和。

2024-02-19 21:44:54 321 1

原创 高考之志愿问题

计算机竞赛小组的神牛 V 神终于结束了高考,然而作为班长的他还不能闲下来,班主任老 t 给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是 v 神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。根据 nn 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。第二行共有 m 个数,表示 m 个学校的预计录取分数。第三行有 n 个数,表示 n 个学生的估分成绩。

2024-02-18 21:59:17 362

原创 队列之窗口

有一个长为 n 的序列 a,以及一个大小为 k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。依次处理数组中的元素,维护双端队列中的元素,确保队列中的元素是滑动窗口内的元素,并且队列中的元素按照一定的规则排列。这道题是一个滑动窗口最小最大值的算法实现。首先我们定义了一个结构体,包含两个整型变量。最后输出得到的最小值和最大值数组。

2024-02-15 19:46:22 297 1

原创 链表之双向

我们运用了来解决一些问题,但在解决那些需要大量查找前趋节点的问题是,单向链表无疑是不能用了,因为单向链表适合“从前往后”查找,并不适合“从后往前”查找。如果要提高链表的查找效率,那(双链表)无疑是首选。

2024-02-14 21:05:16 354 1

原创 并查集之搭配

听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n nn朵云,云朵已经被老板编号为1 , 2 , 3 , . . . , n 1,2,3,...,n1,2,3,...,n,并且每朵云都有一个价值,但是商店的老板是个很奇怪的人,他会告诉你一些云朵要搭配起来买才卖,也就是说买一朵云则与这朵云有搭配的云都要买,电脑组的你觉得这礼物实在是太新奇了,但是你的钱是有限的,所以你肯定是想用现有的钱买到尽量多价值的云。计算操作:在合并操作中,我们还需要计算每个组搭配购买的总花费和总价值。

2024-02-08 21:47:41 334

原创 并查集模板

定义:并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。主要构成:并查集主要由一个整型数组pre[ ]和两个函数find( )、join( )构成。数组 pre[ ] 记录了每个点的前驱节点是谁,函数 find(x) 用于查找指定节点 x 属于哪个集合,函数 join(x,y) 用于合并两个节点 x 和 y。

2024-02-08 21:27:33 335

原创 动归之采药

如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。第一行有 2 22 个整数 T TT(1 ≤ T ≤ 1000 1 \le T \le 10001≤T≤1000)和 M MM(1 ≤ M ≤ 100 1 \le M \le 1001≤M≤100),用一个空格隔开,T TT 代表总共能够用来采药的时间,M MM 代表山洞里的草药的数目。在内层循环中,对于每个物品 i 和背包容量 j,如果当前的背包容量 j 大于等于物品 i 的重量 c[i],则可以选择将物品 i 放入背包中。

2024-02-06 23:04:49 344 1

原创 表格地址转换

题目描述在流行的电子表格系统(例如,在 Excel 中)中,使用以下列编号。第一列有数字 A,第二列有数字 B,依此类推,直到第 26 列用 Z 标记。然后是两个字母的数字:第 27 列有数字 AA,28 — AB,第 52 列用 AZ 标记。ZZ之后是三个字母的数字,等等。这些行用以 1 开头的整数标记。单元格名称是列和行号的串联。例如,BC23 是第 55 列第 23 行中的单元格的名称。有时使用另一种计数系统:RXCY,其中 X 和 Y 是整数,分别显示列和行号。

2024-02-05 21:57:11 517 1

原创 临时抱佛脚

因此要开始刷习题集,每科都有一个习题集,分别有 s1​,s2​,s3​,s4​ 道题目,完成每道题目需要一些时间,可能不等 A1​,A2​,…,As1​​,B1​,B2​,…,Bs2​​,C1​,C2​,…,Cs3​​,D1​,D2​,…,As1​​ 共 s1​ 个数,表示第一科习题集每道题目所消耗的时间。最后,程序使用总时间减去左脑能够达到的最大时间总和,得到右脑能够达到的最大时间总和,并将其累加到变量。本题包含 5 行数据:第 1 行,为四个正整数 s1​,s2​,s3​,s4​。

2024-02-02 23:41:29 362

原创 bfs之迷宫寻路

同时在主函数中,首先读取输入的迷宫大小,并使用双重循环读取迷宫的内容。然后判断起点和终点位置是否为墙壁,如果是,则输出"No"。否则,遍历当前位置的四个相邻位置,如果满足条件(未访问过且为可通过的位置),则标记该位置为已访问,并递归调用。迷宫可以视为一个 n×m 矩阵,每个位置要么是空地,要么是墙。函数中,首先判断当前位置是否满足条件(到达终点),如果满足,则将标志变量。机器猫初始时位于 (1,1) 的位置,问能否走到 (n,m) 位置。的二维数组,用来记录迷宫中每个位置是否已经被访问过。

2024-02-01 21:49:07 562 1

原创 栈的初步问题

给出两个序列 pushed 和 poped 两个序列,其取值从 1 到 n(n≤100000)。已知入栈序列是 pushed,如果出栈序列有可能是 poped,则输出。每次压入之前判断当前栈顶元素是否和poped数组中的元素对应,如果对应则将栈顶元素弹出pop(),并进行循环判断。对于序列a 我们依次和序列b来比较,如果不相同,则把a的当前数字入栈,如果相同,则出栈(不止出栈一次,可能连续出栈,但还没循环到a的下一个数字),最后遍历完a的所有数字后,如果栈不为空,则代表这个出栈序列不合理,若为空则表示。

2024-01-31 21:57:09 370

原创 高手恋爱问题

高手的那个它,不喜欢太刺激的过程,因此那些没有路的观景点高手是不会选择去的。而高手想让他们在一起的路程最长(观景时它不会理高手),已知高手的穿梭机可以让他们在任意一个观景点出发,也在任意一个观景点结束。函数中,它用于从当前景点开始进行深度优先搜索。对于当前景点,遍历与他有连接的景点,并将该景点标记为已访问,然后递归调用。函数进行深度优先搜索,以找到从该景点出发的最长路径。这是一个求解图的最长路径的问题,使用深度优先搜索(DFS)算法来解决。在递归结束后,将该景点标记为未访问,以便其他路径可以经过该景点。

2024-01-30 19:38:11 356 1

原创 搜索之接水问题

当其中某名同学 j 完成其接水量要求 wj​ 后,下一名排队等候接水的同学 k 马上接替 j 同学的位置开始接水。我们使用数组,数组下标就是每个水龙头的标号 (1-m),那么数组的值就是对应的学生对应的接水量,刚开始时1-m个水龙头默认的对应1-m编号学生的接水量,一旦有一个学生接完了 那么就让下一个等待接水的学生来这个水龙头接水,同时使用一个计数器来统计已经接完水的人数,当人数的达到时跳出。现在给出 n 名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。

2024-01-29 19:47:59 363

原创 dfs算法

刚入门dfs嘛,递归其实对我来说还没那么简单,我一开始的思路就一直在想这个递归到底应该如何去处理,我在想不同的情况应该如何考虑。现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 10 种配料的所有搭配方案。因为这个题目的话有1,2,3,三个数嘛,有多种情况,所以一开我就在想,又要递归,又要找这些规律。这个题目应当按照一个树形的结构去思考,从一开始往下搜,然后搜到满足条件,就储存然后回溯。所以我们采用递归的方式,递归每个位置,枚举每个位置上放哪个数。回溯的时候更新方案,然后递归下一种情况。

2024-01-26 16:25:43 321 1

原创 约瑟夫问题

开始报数,报到m的人将标记赋值为0,代表他已经不在计算范围内,统计加一;n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 11 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。先定义一个数组,最开始将所有的元素初始化为0,0代表一开始所有人都在圈内,一旦某个人出局,将其对应的数组元素的值设为1,代表他以出圈;count:用来计数,从0开始,一旦k的值达到M,代表当前这个人需要出局,并且k的值需要重新置为0,这样才能找到所有需要出局的人。

2024-01-25 19:49:47 470 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除