自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序二叉树(c++)

上图为一棵排序二叉树。相信你已经发现,将排序二叉树上的节点的权值按照中序遍历顺序排列成的序列,一定是严格单调递增的。下面我们来讲一下如何构造一棵排序二叉树,我们主要运用 DFS 的方法。如果左子树不为空,则左子树上的所有节点的权值都小于该节点的权值。如果右子树不为空,则右子树上的所有节点的权值都大于该节点的权值。排序二叉树是一棵有顺序,且没有重复元素的二叉树。假定我们要将数值 X 插入二叉树中。

2024-07-22 21:02:37 50

原创 GESP C++ 二级真题(2023年12月)T1 小杨做题

为了准备考试,小杨每天都要做题。从第三天起,小杨每天做的题目数量是前两天的总和。第一行一个整数a,第二行一个整数b,第三行一个整数m,第四行·一个·整数n。此外,小杨还规定当自己某一天做了大于或等于m题时,接下来的日子,他就不做题了。请问到了第n天,小杨总共做了多少道题?一行一个整数,表示小杨n天总共做的题数。

2024-07-20 18:55:07 364

原创 GESP C++ 三级真题(2023年12月)单位转换

其中,x为一个不超过1000的非负整数,单位1和单位2分别为两个单位的英文缩写,保证它们都是长度单位或都是重量单位,且单位1比单位2更大。输出N行,依次输出所有题目的答案,输出时,只需要将输入中的?由于小杨的题目只涉及将更大的单位转换为更小的单位,并且输入的x是整数,因此答案一定也是整数。小杨的作业只涉及将更大的单位转换为更小的单位,也就是说,小杨的作业只会包含如下题型:米转换为毫米,千米转换为毫米,千米转换为米,克转换为毫克,千克转换为毫克,千克转换为克.mm,则你需要输出1 km=1000000mm。

2024-07-19 16:04:34 400

原创 GESP C++ 三级真题(2023年6月)密码合规

包含四个特殊字符之外的字符 “^” ,不合规。1 、只能由 a-z 之间 26 个小写字母、 A-Z 之间 26 个大写字母、 0-9 之间 10 个 数字以及!网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。3、大写字母、小写字母和数字必须至少有其中两种,以及至少有四个特殊 字符中的一个。输出若干行,每行输出一组合规的密码。输出顺序以输入先后为序,即先输入则先输出。2 、密码最短长度: 6 个字符,密码最大长度: 12 个字符。

2024-07-16 17:58:30 425

原创 GESP C++ 三级真题(2023年9月)T1 ⼩ 杨储蓄

⼩ 杨共有 N个储蓄罐,编号从0到N-1。从第1天开始, ⼩杨每天都会往存钱罐里 存钱。具体来说,第i天他会挑选一个存钱罐 ɑ i ,并存 ⼊i元钱。小杨在第1天、第2天、第3天分别向0号、1号、0号存钱罐存了1元钱、2元钱、 3 元钱,因此0号存钱罐有1+3=4元钱,而1号存钱罐有2元钱。第二行D个整数,其中第i个整数为 ɑ i( 保证0≤ ɑ i≤ N-1)。输出N个用单个空格隔开的整数,其中第i个整数表示编号为i-1的存钱罐中有多 少钱(i = 1,...,N)。保证1≤N≤1000;

2024-07-14 09:29:17 611

原创 GESP C++ 三级真题(2024年3月)T2 完全平方数

题目描述:小杨同学有一个包含 个非负整数的序列 ,他想要知道其中有多少对下标组合 ( ),使得 是完全平方数。如果 是完全平方数,则存在非负整数 使得。3.2.2 输入格式 第一行一个非负整数 ,表示非负整数个数。第二行包含 个非负整数 ,表示序列 包含的非负整数。3.2.3 输出格式 输出一个非负整数,表示和是完全平方数的非负整数对数。试题名称:完全平方数。

2024-07-11 15:50:15 452

原创 GESP C++ 三级真题(2023年9月)T2 进制判断

除此之外,八进制和十六进制在一些场合也是 常用的计数制(十六进制中,一般使用字母A至F表示十至十五)。输入的第一行为一个十进制表示的整数N。接下来 N行,每行一个字符串,表示需要判断的数。输出N行,每行4个数,用空格隔开,分别表示给定的字符串是否可能表示一个二 进制数、八进制数、十进制数十六进制数。现在有N个数,请你分别判断他们是否可能是二进制、八进制、十进制、十六进 制。例如,15A6F就只可能是十六进制,而1011则是四种进制皆有可能。例如,对于只可能是十六进制数的 15A6F,就需要输出0001;

2024-07-10 18:57:18 879 2

原创 P8152 「PMOI-5」破译

lhm 现在有一个边长为 11 的正方形,现在要进行 k 次分割,每次分割需要把位于图形中右下角的矩形继续分割成 n×n 的矩形。分割完成后所有矩形的个数即为破译后的答案。lhm 需要聪明的你帮助他解决这个问题。2077 年,穿越的 Lanuxhem 为与 2021 年的 Silver187 联系,发明了一种图形转数字的密码。由于答案可能过大,请把答案取模 998244353 后输出。注:由于题面形容比较困难,请移步至样例解释便于理解题意。一行两个整数 n,k,含义如题目所示。一行一个整数,表示最终答案。

2024-07-09 16:35:03 379

原创 P8086 『JROI-5』Music

表示小 C 听了编号为 x 的音乐 t 分钟。听歌时间为所有有效记录的 t 的总和。小 C 喜欢在网易云听歌,她希望你能帮助她计算一下她的网易云的听歌时间。接下来 n 行每行两个正整数 x,t,表示一条听歌记录。首先,如果某条记录的 t≤1,那么这条记录是无效的。,之后重复听这首歌的记录将不会被累计到听歌时间中。小 C 有 n 条听歌记录,每条形如。第一行一个正整数 n,同题意。小 C 每年都要给丁总氪钱。一行一个整数,表示听歌时间。其次对于某一首歌,只有。

2024-07-08 21:49:36 392 3

原创 P8225 「Wdoi-5」天才⑨与天才拆分

兴奋的琪露诺告别了哆来咪,猛然发现自己已经身处在期末考试的考场之上!但是琪露诺实在是太笨了,醒来就把哆来咪告诉她的题目忘得一干二净,只记得试卷上有大量的⑨。例如,99999999 是 22 阶天才数,而 999999 不是 22 阶天才数,但是它是 11 阶天才数,也是 33 阶天才数。琪露诺给定你 t 个询问,每个询问有两个整数 n 和 k,希望你能帮帮她,告诉她能不能把 n 拆分成若干个 k 阶天才数的和。现在琪露诺已经在考试啦,你可以使用⑨的妖精链接回答她的问题,以平复她忘记了考试答案的悲痛。

2024-07-07 11:32:57 313

原创 洛谷题目B3617:古籍翻译

机器猫跑到外星人的图书馆去读书。有一本外星古籍,里面的内容是用八进制写成的;但机器猫只能处理十六进制的数据。请你帮忙写一个翻译软件,帮机器猫把八进制串翻译成十六进制串。仅一行,一个八进制字符串 s,表示古籍内容。仅一行,一个十六进制字符串,表示翻译结果。

2024-07-06 20:12:03 298

原创 [NOIP2004 普及组] 火星人#洛谷

如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1 , 2 , 3 , 4 和 5 ,当它们按正常顺序排列时,形成了 5 位数 12345 ,当你交换无名指和小指的位置时,会形成 5 位数 12354 ,当你把五个手指的顺序完全颠倒时,会形成 54321 ,在所有能够形成的 120 个 5 位数中,12345 最小,它表示 1;你的任务是,把火星人用手指表示的数与科学家告诉你的数相加,并根据相加的结果改变火星人手指的排列顺序。N 个整数,表示改变后的火星人手指的排列顺序。

2024-07-05 21:48:36 400

原创 字母求和__GESP C++ 三级真题(2024年3月)

小杨同学利用这种方式对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc 对应的加密前的整数为。小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母a代表了正整数 1,字母b代表了正整数 2;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCI 码的相反数,例如字母A代表了正整数-65。对于给定的字符串,请你计算出它对应的加密前的整数是多少。

2024-07-04 20:37:31 325

原创 【洛谷 P1208】[USACO1.3] 混合牛奶 Mixing Milk

此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。给出 Marry 乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的最小花费。接下来 m 行,每行两个整数 pi​,ai​,表示第 i 个农民牛奶的单价,和农民 i 一天最多能卖出的牛奶量。单独的一行包含单独的一个整数,表示 Marry 的牛奶制造公司拿到所需的牛奶所要的最小费用。第一行二个整数 n,m,表示需要牛奶的总量,和提供牛奶的农民个数。

2024-07-03 13:16:09 384

原创 字母求和__GESP C++ 三级真题(2024年3月)

小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母a代表了正整数 1,字母b代表了正整数 2;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCI 码的相反数,例如字母A代表了正整数-65。小杨同学利用这种方式对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc 对应的加密前的整数为 1+(-65)+3=-61。

2024-07-02 22:19:34 213

原创 洛谷 -- P1803 凌乱的yyy / 线段覆盖

第一行是一个整数 n ,接下来 n 行每行是 22 个整数 ai​,bi​ ( ai​<bi​ ),表示比赛开始、结束的时间。由于 yyy 是蒟蒻,如果要参加一个比赛必须善始善终,而且不能同时参加 22 个及以上的比赛。现在各大 oj 上有 n 个比赛,每个比赛的开始、结束的时间点是知道的。yyy 认为,参加越多的比赛,noip 就能考的越好(假的)。所以,他想知道他最多能参加几个比赛。快 noip 了,yyy 很紧张!一个整数最多参加的比赛数目。

2024-07-02 12:53:45 506

原创 [NOIP2008 提高组] 火柴棒等式

给你 n 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。如果 A≠B,则 A+B=C 与 B+A=C 视为不同的等式(A,B,C≥0);一个整数,能拼成的不同等式的数目。加号与等号各自需要两根火柴棍;一个整数 n(1≤n≤24)。n 根火柴棍必须全部用上。

2024-07-02 12:47:39 517

原创 弹珠游戏(c++)

输入有两行,第一行一个正整数 n,接下来 n 行,每行 n 列,如果有敌人则为一个正整数,否则为 0。游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只。能攻击你所在的行、列里的所有敌人,然后你就可以获得他们的分数之和,现在请你选择。输出共一行,最多分数,如果连你的容身之地都没有,请输出“Bad Game!一个你的位置,使得能击杀的敌人最多,注意,你不能和敌人在一个地方。元宵节不放假挺郁闷的,于是时间机智的改到了星期6一整天!欢迎进入@shuai:弹珠游戏;

2024-07-01 07:47:56 293

原创 洛谷P1478 陶陶摘苹果(升级版) (C++)

现在已知 n 个苹果到达地上的高度 xi​,椅子的高度 a,陶陶手伸直的最大长度 b,陶陶所剩的力气 s,陶陶摘一个苹果需要的力气 yi​,求陶陶最多能摘到多少个苹果。又是一年秋季时,陶陶家的苹果树结了 n 个果子。陶陶又跑去摘苹果,这次他有一个 a 公分的椅子。第 33 行~第 3+n−1 行:每行两个数 苹果高度 xi​,摘这个苹果需要的力气 yi​。第 22 行:两个数 椅子的高度 a,陶陶手伸直的最大长度 b。第 11 行:两个数 苹果数 n,力气 s。只有一个整数,表示陶陶最多能摘到的苹果数。

2024-06-17 19:02:13 353

原创 Farmer John 的 N 头奶牛对他们牛棚的室温非常挑剔。有些奶牛喜欢温度低一些,而有些奶牛则喜欢温度高一些

Farmer John 的 N 头奶牛对他们牛棚的室温非常挑剔。有些奶牛喜欢温度低一些,而有些奶牛则喜欢温度高一些。Farmer John 的牛棚包含一排 N 个牛栏,编号为 1⋯N,每个牛栏里有一头牛。第 i 头奶牛希望她的牛栏中的温度是 pi​,而现在她的牛栏中的温度是 ti​。为了确保每头奶牛都感到舒适,Farmer John 安装了一个新的空调系统。

2024-06-12 20:04:52 502

原创 [洛谷 P5019][NOIP2018 提高组] 铺设道路

春春每天可以选择一段连续区间[L,R],填充这段区间中的每块区域,让其下陷深度减少 1。在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为 0。输入文件包含两行,第一行包含一个整数 n,表示道路的长度。整段道路可以看作是 n块首尾相连的区域,一开始,第 i块区域下陷的深度为di​。春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为 00。输出文件仅包含一个整数,即最少需要多少天才能完成任务。春春是一名道路工程师,负责铺设一条长度为 n的道路。

2024-06-10 22:03:22 413

原创 A-B Problem

两个整数 a,b(第二个可能比第一个大)。结果(是负数要输出负号)。

2024-06-05 19:17:58 425

原创 A+B Problem

高精度加法,相当于 a+b problem,a,b≤10^500。输出只有一行,代表 a+b 的值。

2024-06-03 18:50:24 457

原创 数组模拟链表

指针的使用确实有一些非常坑的地方,稍不注意就 RE 了。所以在很多时候我会使用不容易产生错误的(结构体)数组去模拟链表。在本质上,我是把指向一个元素的对象从 指针 修改为了 数组下标,其余的和链表无差别。最后你需要定义一个结构体数组,数组的大小是元素的最大总数,你需要提前算出来。当你理解了需要使用的量之后,我们来一起看一看常见的操作吧!链表的表尾我固定用 0(或者 -1,建议 0,因为。的内容,表示当前元素在链表内的下一个元素是什么。这里我构建出来了一个最简单的元素表示。的内容,表示每个元素的权值。

2024-05-30 18:23:06 408

原创 [CSP-J 2019] 零件加工

编号为 2 的工人想生产第 2 阶段的零件,需要编号为 1 和 3 的工人生产第 1 阶段的零件,他/她们都需要编号为 2 的工人提供原材料。编号为 1 的工人想生产第 2 阶段的零件,需要编号为 2 的工人生产第 1 阶段的零件,需要为编号 1 和 3 的工人提供原材料。编号为 3 的工人想生产第 2 阶段的零件,需要编号为 2 的工人生产第 1 阶段的零件,需要编号为 1 和 3 的工人提供原材料。编号为 2 的工人想生产第 1 阶段的零件,需要编号为 1 和 3 的工人提供原材料。

2024-05-29 20:24:19 550

原创 春游GESP C++ 三级真题(2023年6月)

老师带领同学们春游。已知班上有N 位同学,每位同学有从 0 到N − 1 的唯 一编号。到了集合时间,老师确认是否所有同学都到达了集合地点,就让同学们 报出自己的编号。到达的同学都会报出自己的编号,不会报出别人的编号,但有的同学很顽皮,会多次报出。第一行包含两个整数N和M ,表示班级有 N位同学,同学们共有 M 次报出编号。约定 2 ≤ N, M ≤ 1000。如果所有同学都到达,则输出 N;否则由小到大输出所有未到达 的同学编号,空格分隔。第二行包含 M 个整数,分别为 M次报出的编号。

2024-05-27 20:56:19 537

原创 [NOIP 2014] 寻找道路

如上图所示,满足条件的路径为 1→3→4→5。注意点 2 不能在答案路径中,因为点 2 连了一条边到点 6,而点 6 不与终点 5 连通。然后看每个点,看每个点连出的每条边,如果发现这个点连着一个刚才没有被标记的点,就说明这个点是不符合题目要求的点,就不能用。起点 1 与终点 3 不连通,所以满足题目描述的路径不存在,故输出 −1。我们需要关注有哪些点是直接或间接与终点相连的,这就可以建立反向图由终点开始搜索了,DFS 或 BFS 都可以。最后在正向图上 BFS,只走符合要求的点。

2024-05-27 20:54:16 524

原创 BFS迷宫游戏(c++)

用 DFS 求解迷宫最短路有一个很大的缺点,需要枚举所有可能的路径,读入的地图一旦很大,可能的搜索方案数量会非常多,用 DFS 搜索显然效率会很低。由于 BFS 是分层搜索,因此,第一次搜索到终点的时候,当前搜索的层数就是最短路径的长度。搜索过程中第一次搜索到终点的时候是最短距离,所以可以让。等于 −1,表示这个点是第一次搜索到的点,需要更新。数组初始化为 −1,搜索过程中如果刚搜索到的点的。如果我们要求解起点到某个点的最短距离时,可以设置。记录起点到达每个点的最短距离。

2024-05-20 18:37:45 390

原创 8皇后问题(c++)

因为我们是逐列放置的,所以列内是不会冲突的,对于行也很好处理,如果某行被占用了,只需要用一个数组标记即可。N 皇后问题是一个经典的问题,在一个 N×N 的棋盘上放置 N 个皇后,每行刚好放置一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。从第 0 列开始,我们依次给每一列放置一个皇后,对于一个确定的列,我们只需要去枚举放置的行即可,在保证放置合法的情况下,一直搜索下去。上图就是一个合法的 8 皇后的解。而这样的对角线上的位置的坐标的行减去列的值也是相同的,都是 −2。

2024-05-19 19:52:33 739

原创 连通块(c++)

进行深度优先搜索的次数就是图中的连通块个数,如果我们在每次进行深度优先搜索时,对访问过的点进行不同的标记,就可以记录每个连通块内的顶点有哪些了,也可以跟迷宫问题时一样求解连通块大小,最大连通块等问题。其实之前在迷宫问题的时候,我们谈过连通块,这两个概念其实是一样的,正如本章最开始所说,我们可以把迷宫画成一般的图的样子,而且画出来就是无向图。在无向图上,我们可以利用 DFS 可以求连通块的数量。形象一点说,一个连通块就是一些能互相到达的点形成的图上的一块。在迷宫上的连通块也就是在这个图上的连通块。

2024-05-16 18:11:19 755 1

原创 迷宫游戏(c++)

2.否则我们就需要从该格子出发,可以分别枚举向左、向下、向右、向上四个方向,依次去判断它旁边的四个点是否可以作为下一步合法的目标点,如果可以,那么我们就进行这一步,走到目标点,然后继续进行操作。很明显,当我们从任意格子出发,都有可能往四个方向走:上,下,左,右。而初始的时候,我们是在起点S处,之后开始进行我们的搜索过程,也就是我们要讲的 DFS 算法。3.当然有可能左、下、右、上四个点都无法再成为合法的目标点了,那么我们就回退一步,然后从上一步所在的那个格子向其他 未尝试的方向 继续枚举。

2024-05-15 19:15:35 805

原创 等和的分隔子集

晓萌希望将1到 N 的连续整数组成的集合划分成两个子集合,且保证每个集合的数字和是相等。例如,对于 N =3,对应的集合{1,2,3} 能被划分成{3} 和{1,2} 两个子集合。输出包括一行,仅一个整数,晓萌可以划分对应 N 的集合的方案的个数。当没法划分时,输出 0。对于 N =3,我们只有一种划分方法,而对于 N =7时,我们将有 4种划分的方案,输入包括一行,仅一个整数,表示 N 的值(1 ≤ N < 39)。这两个子集合中元素分别的和是相等的。

2024-05-13 18:32:28 342 1

原创 可行性判定(c++)

已知第 i 件物品的体积是 ci​,每种物品有且仅有一件,每一件物品能够选择放或者不放入背包。普通的 01 背包中要求放入物品的体积之和不超过 V,而现在我们需要使体积之和恰好为 V。现在我们不考虑物品的价值,只关心是否能够取出若干个物品,恰好使这个背包被装满。因为结果只需要输出 V 这个体积是否能被组出,因此我们可以将 dp 数组定义成。也就是说,现在我们需要选出若干件物品,使它们的体积之和。时间复杂度为 O(NV),空间复杂度为 O(NV)。当前有 N 件物品和一个容积为 V 的背包。

2024-05-11 19:58:13 566 1

原创 完全背包问题(c++)

虽然物品个数是无限的,但是实际上,由于背包容量有上限,每个物品最多选取的个数也是有限制的,这样可以转换成多重背包问题,进而可以转换成 01 背包问题。现有容量为 V 的背包,请你放入若干物品,使总体积不超过 V,并且总价值尽可能大。当前有 N 种物品,第 i 种物品的体积是 ci​,价值是 wi​。每种物品的数量都是无限的,可以选择任意数量放入背包。可以用多重背包的思想来解决完全背包。

2024-05-09 20:11:20 652 1

原创 多重背包(c++)

这一份代码和 01 背包相比,不再有 else 部分了,因为,k = 0 的时候 dp[i][j] = max(dp[i - 1][j], dp[i][j]) ,相当于 01 背包的 else 部分。我们也可以在转移的过程中枚举 k,代表第 i 个物品选取的数量,和 01 背包的思想一样,有如下转移。我们可以把每个种类的 ni​ 个物品,都当成 01 背包里的不同种物品,只是恰巧体积和价值相同。与 01 背包不同的是,多重背包每种物品都有若干个,数量为 ni​,是有限的。

2024-05-08 18:23:30 535 1

原创 01 背包问题(c++)

对于每个物品是否要装入背包,我们自然可以进行暴力枚举或搜索,但是如果要暴力地去做,那么时间复杂度会非常的高,这时候需要一种更优的算法——动态规划。为了使价值最大化,如果第 i 个物品放入背包后,总体积不超过限制且总价值比之前要大,那么就将第 i 个物品放入背包。当 ci​≤j≤V 时, dp[i][j]=max(dp[i−1][j],dp[i−1][j−ci​]+wi​)前 i 个物品,放在背包里,体积之和不超过 j 的前提下,所获得的最大价值为 dp[i][j]。对于 01 背包,先确定这个问题的状态。

2024-05-07 21:59:07 441

原创 最长公共子序列(c++)

有了前面的基础,可以发现这个问题仍然可以按照序列的长度来划分状态,也就是 S1​ 的前 i 个字符和 S2​ 的前 j 个字符的最长公共子序列长度,记为 dp[i][j]。如果 S1​ 的第 i 项,和 S2​ 的第 j 项相同,那么 S1​[i] 与 S2​[j] 作为公共子序列的末尾,则。举一个例子,两个序列 S1​=abcfbc 和 S2​=abfcab,根据转移方程可以得出 dp[i][j]最长公共子序列:给定两个序列 S1​ 和 S2​,求二者公共子序列 S3​ 的最长的长度。

2024-05-04 13:29:47 517 1

原创 [NOIP 2008] 传球游戏(c++)

比如有 33 个同学 11 号、22 号、33 号,并假设小蛮为 11 号,球传了 33 次回到小蛮手里的方式有 1→2→3→11→2→3→1 和 1→3→2→11→3→2→1,共 22 种。游戏规则是这样的:n 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。100%100% 的数据满足:3≤n≤30,1≤m≤30。

2024-05-03 15:04:34 482

原创 最长上升子序列(c++)

最长上升子序列,就是给定序列的一个最长的、数值从低到高排列的子序列,最长上升子序列不一定是唯一的。先来确定状态,可以设 dp[i] 表示只考虑了前 i 个数的时候的最优解,考虑到达这个状态的最后决策,应该是把 a[i] 接到前边的一个子序列之后,那接下来就考虑怎么接。此时,我们在把 a[i] 接进前边的子序列的时候,就看 i 前边的每一位 j ,如果有 j

2024-05-03 14:52:51 347

原创 归并排序 -- 稳定(c++)

方法很简单,用两个变量p1和p2分别表示两个数组未被取出的元素中最小元素的下标,初始为 0。然后每次取出a[p1]和b[p2]中较小的那个放进新的数组里。如果取出的是a[p1],那p1就自增 1;否则,把区间划分为 [l,mid] 和 [mid+1,r] 两部分递归处理,其mid=⌊2l+r​⌋。归并排序的基本思想是分治,每次把待排序的区间分成两半,递归地处理。先来看这样一个问题,现在你有两个有序数组a和b,如何把他们合并为一个新的有序数组c?如果有数组被取空了,那就把另一个数组剩下的都放进来就可以了。

2024-05-02 14:52:19 11 1

空空如也

空空如也

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

TA关注的人

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