洛谷
文章平均质量分 52
9527过了头
后知后觉努力中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
U514565 连通块中点的数量
摘要:本文描述了一个使用并查集处理动态连通性问题的算法。系统维护n个初始孤立的节点,支持三种操作:添加边(Cab)、连通性查询(Q1ab)和连通块大小查询(Q2a)。核心算法通过路径压缩优化find函数,并使用sum数组存储各连通块大小。时间复杂度接近O(1)每次操作,能高效处理大规模数据。代码实现包括初始化、合并操作以及两种查询的逻辑,适用于需要动态维护图连通性的场景。原创 2025-07-26 20:50:14 · 280 阅读 · 0 评论 -
P1873 [COCI 2011/2012 #5] EKO / 砍树
本题要求找出满足条件的最高砍伐高度 H,使得总木材量不少于 M。使用二分查找在 0 到最大树高之间搜索,对每个中间值计算可获得的木材总量,若满足条件则尝试更高的 H,否则降低 H。最终找到最大的符合条件的 H,确保结果准确且高效。原创 2025-06-09 18:04:25 · 351 阅读 · 0 评论 -
P1102 A-B 数对
该内容提供了一个解决 A−B=C 数对统计问题 的 C++ 程序及详细解析。题目要求找出数组中所有满足 A−B=C 且 A 在 B 右侧的有序数对数量,相同数值但不同位置视为不同数对。核心思路: 排序数组:便于使用二分查找。 遍历每个元素作为 B:计算目标值 A = B + C。 使用 lower_bound 和 upper_bound:快速查找右侧等于 A 的元素个数。 时间复杂度优化:通过二分查找将效率提升至接近 O(N log N),适用于大输入规模(N 最多 20原创 2025-06-09 10:44:50 · 418 阅读 · 0 评论 -
P1803 凌乱的yyy / 线段覆盖
摘要:题目要求计算在多个比赛时间段不重叠的情况下,最多能参加的比赛数量。输入给出n个比赛的开始和结束时间,输出最大参赛数。解题思路是按结束时间排序后贪心选择最早结束的比赛,确保不与其他选中比赛冲突。时间复杂度为O(n log n)的排序加上O(n)的选择过程,适用于n≤1e6的数据规模。代码示例展示了结构体存储、自定义排序和标记检查的实现方法。原创 2025-06-02 20:44:12 · 365 阅读 · 0 评论 -
P1115 最大子段和
摘要:本文介绍了一种使用动态规划求解最大子段和问题的方法。通过定义dp[i]表示以a[i]结尾的最大子段和,状态转移方程为若dp[i-1]>0则dp[i]=dp[i-1]+a[i],否则dp[i]=a[i]。算法时间复杂度为O(n),空间复杂度可通过优化降低为O(1)。关键点在于理解dp数组的定义和状态转移过程,通过遍历数组并维护当前最优解来求得全局最大值。原创 2025-06-02 12:16:06 · 214 阅读 · 0 评论 -
P1928 外星密码
解开密码的第一道工序就是解压缩密码,外星人对于连续的若干个相同的子串 X 会压缩为 [DX] 的形式(D 是一个整数且 1≤D≤99),比如说字符串 CBCBCBCB 就压缩为 [4CB] 或者[2[2CB]],类似于后面这种压缩之后再压缩的称为二重压缩。如果是 [2[2[2CB]]] 则是三重的。递归的地方就是:如果遇到“[2AC]”这种形式,假设使用k来表示第一个数字,需要连续输出k次数字之后']'之前的字符串几次。对于 50% 的数据:解压后的字符串长度在 1000 以内,最多只有三重压缩。原创 2025-04-09 22:44:27 · 397 阅读 · 0 评论 -
P1464 Function
自我理解:记忆化搜索就是在dp的过程中将已经知道的值进行赋值给一个和dp对应的数组中去,在执行程序时候先判断是否对应的值存在,若存在就能直接使用,去除了重复的步骤,极大的减少了程序的运行时间。这是个简单的递归函数,但实现起来可能会有些问题。当 a,b,c 均为 15 时,调用的次数将非常的多。注意:例如 w(30,−1,0) 又满足条件 1 又满足条件 2,请按照最上面的条件来算,答案为 1。这道题直接利用题目给出的逻辑返回值会出现超时。对于一个递归函数 w(a,b,c)并以 −1,−1,−1 结束。原创 2025-04-09 20:13:41 · 240 阅读 · 0 评论 -
P1028 [NOIP 2001 普及组] 数的计算
请你求出,一共有多少个合法的数列。两个合法数列 a,b 不同当且仅当两数列长度不同或存在一个正整数 i≤∣a∣,使得 ai=bi。我们利用f(i)表示,当n = i 时的答案。输出一行一个整数,表示合法的数列个数。注意这里的i / 2取向下取整。输入只有一行一个整数,表示 n。这里i / 2也是向下取整。原创 2025-04-07 22:46:29 · 440 阅读 · 0 评论 -
P2036 [COCI 2008/2009 #2] PERKET
为了做好 Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种配料的苦度的总和。接下来 n 行,每行 2 个整数 si 和 bi,表示第 i 种食材的酸度和苦度。众所周知,美食应该做到口感适中,所以我们希望选取配料,以使得酸度和苦度的绝对差最小。另外,我们必须添加至少一种配料,因为没有任何食物以水为配料的。一行一个整数,表示可能的总酸度和总苦度的最小绝对差。代码中sum,表示在n种食材中选择的食材的数量。原创 2025-04-07 21:56:19 · 492 阅读 · 0 评论 -
P3799 小 Y 拼木棒
要想利用4个木棒得到一个正三角形,首先得有两个相同的木棒,并且这个长度的木棒会比另外两个木棒的长度长。我们合理使用数组来存储每个长度木棒的数量,将数组a开到满足题目的最大值。从大到小进行遍历,如果它的值a[i]大于等于2,则在1到i/2的范围内寻找满足题目情况的值。第二行往下 n 行,每行 1 个整数,第 i 个整数 ai 代表第 i 根木棒的长度。有 n 根木棒,现在从中选 4 根,想要组成一个正三角形,问有几种选法?上道题中,小 Y 斩了一地的木棒,现在她想要将木棒拼起来。第一行一个整数 n。原创 2025-04-06 16:01:06 · 358 阅读 · 0 评论 -
P1321 单词覆盖还原
只需要遍历整个字符串,因为单词的字符内容是连着的,因此,要想解决覆盖的问题,对于一个boy而言,有一个b,一个bo,或者一个boy都是一样的效果。后贴上单词,会覆盖之前贴上的单词,或者覆盖句号。最终,每个单词至少有一个字符没有被覆盖。我有一个长度为 l 的字符串,最开始时,这个字符串由 l 个句号(两单词,依次贴到这个字符串中。我在这个字符串中,将多次把。原创 2025-04-06 11:34:31 · 187 阅读 · 0 评论 -
P1149 [NOIP 2008 提高组] 火柴棒等式
给你 n 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。这道题依旧使用暴力即可解决,枚举并且判断所有可能即可解决问题,注意要将范围开大一点。利用数组记录所有0-9数字对应的火柴数。一个整数,能拼成的不同等式的数目。一个整数 n(1≤n≤24)。原创 2025-04-05 11:43:46 · 291 阅读 · 0 评论 -
P3654 First Step (ファーストステップ)
我们 Aqours 现在已经一共有 K 个队员了,要歌唱舞蹈起来的话,我们得排成一条 1×K 的直线,一个接一个地站在篮球场的空地上呢 (横竖均可)。我们浦之星女子学院的篮球场是一个 R 行 C 列的矩阵,其中堆满了各种学校的杂物 (用。这是一道暴力的问题,分别判断一个点的向下和向右方向上是否满足条件即可。接下来的 R 行 C 列,表示浦之星女子学院篮球场。这个篮球场,好像很久没有使用过的样子啊……Aqours 的真正的粉丝的你,能帮我们算算吗?表示) 好像并不多的样子呢……里面堆满了学校的各种杂物呢……原创 2025-04-05 10:53:24 · 334 阅读 · 0 评论 -
P3392 涂条纹
现有一个棋盘状的布,分成了 N 行 M 列的格子,每个格子是白色蓝色红色之一,小 a 希望把这个布改成合法图案,方法是在一些格子上涂颜料,盖住之前的颜色。用例范围比较小,我们枚举每一种情况,将每一种对应的对应的涂色的数量存进数组中,然后在数组中求出最小的值即可。只要一个由 N×M 个小方块组成的旗帜符合如下规则,就是合法的图案。小 A 很懒,希望涂最少的格子,使这块布成为一个合法的图案。接下来 N 行是一个矩阵,矩阵的每一个小方块是。一个整数,表示至少需要涂多少块。第一行是两个整数 N,M。原创 2025-04-04 22:05:50 · 268 阅读 · 0 评论 -
P1088 [NOIP 2004 普及组] 火星人
如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,4 和 5,当它们按正常顺序排列时,形成了 5 位数 12345,当你交换无名指和小指的位置时,会形成 5 位数 12354,当你把五个手指的顺序完全颠倒时,会形成 54321,在所有能够形成的 120 个 5 位数中,12345 最小,它表示 1;这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。原创 2025-04-04 16:13:46 · 312 阅读 · 0 评论 -
P1706 全排列问题
按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。的方式来实现,这个过程中要注意题目的要求是一个序列中的数要。由 1∼n 组成的所有不重复的数字序列,每行一个序列。这道题也是一道枚举的问题,我们通过使用。来记录每个数的状态,且在使用的过程中要注意。每个数字保留 5 个场宽。bool类型的used数组。原创 2025-04-02 17:21:55 · 206 阅读 · 0 评论 -
P1036 [NOIP 2002 普及组] 选数
已知 n 个整数 x1,x2,⋯,xn,以及 1 个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。通过DFS来筛选所有的可能,用used函数来存储是否选过了。为了使得所有可能中不出现相同数,顺序不同的情况,因此通过定义for循环中变量的初始值为1,并且随着DFS递增。第二行 n 个整数,分别为 x1,x2,⋯,xn(1≤xi≤5×106)。第一行两个空格隔开的整数 n,k(1≤n≤20,k<n)。例如上例,只有一种的和为素数:3+7+19=29。原创 2025-03-31 22:13:15 · 356 阅读 · 0 评论 -
P1618 三连击(升级版)
代码1:因为数据量比较小,我是直接进行遍历(最小为123,最大987,当然到不了987因为比例是升序),使用一个bool类型的数组用于检查数字是否被使用了,若使用了就跳过这个例子,读取数字的每一位使用while循环。,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出。若干行,每行 3 个数字。按照每行第一个数字升序排列。代码2:dfs,将三个3位数合并成一个数组。三个数,A,B,C。原创 2025-03-31 21:50:29 · 250 阅读 · 0 评论 -
P2640 神秘磁石
显然,两磁石间最大破坏力取决于磁力大小和磁石间距,那么请问给出长度不超过 n 的一维坐标系,有哪几对坐标间磁石破坏力最大。两个点之间的距离为k,都 <= n并且都是素数。输出所有满足这些要求的数对,如果没有就输出“empty”。所有小于等于 n 的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出。在遥远的阿拉德大陆,有一种神秘的磁石,是由魔皇制作出来的,两个正整数 n,k。原创 2025-03-30 23:17:58 · 284 阅读 · 0 评论 -
P1331 海战
一行一个字符串,如果船的位置放得正确(即棋盘上只存在相互之间不能接触的方形,如果两个 `#` 号上下相邻或左右相邻却分属两艘不同的船只,则称这两艘船相互接触了)。在一个方形的盘上,放置了固定数量和形状的船只,每只船却不能碰到其它的船。在本题中,我们认为船是方形的,所有的船只都是由图形组成的方形。这样的话就能够将输出这艘船的所有#都标记完,全部标记完后就船数加一。接下来 R 行,每行 C 个字符,为 `#` 或 `.`。`#` 表示船只的一部分,`.` 表示水。求出该棋盘上放置的船只的总数。原创 2025-03-20 16:51:38 · 462 阅读 · 0 评论 -
P2089 烤鸡
猪猪 Hanke 得到了一只鸡。原创 2025-03-28 21:28:50 · 280 阅读 · 0 评论 -
P1249 最大乘积--洛谷
一个正整数一般可以分为几个互不相同的自然数的和,如 3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4。现在你的任务是将指定的正整数 n 分解成若干个互不相同的自然数(也可以不分解,就是这个数字本身)的和,且使这些自然数的乘积最大。原创 2025-03-23 11:14:38 · 411 阅读 · 0 评论
分享