- 博客(45)
- 收藏
- 关注
原创 BD202401补给
题目要求计算在预算B的限制下,最多能给多少个堡垒提供补给,其中可以享受一次半价优惠。解题思路是对堡垒按总费用排序,优先选择费用低的堡垒,并将优惠用在最后一个堡垒上。程序先对堡垒按P(i)+S(i)排序,然后遍历所有堡垒,判断能否支付全价或半价费用,统计最多可补给的堡垒数量。输入包含N和B,以及每个堡垒的P和S值,输出最大可补给堡垒数。
2025-06-11 17:41:54
207
原创 C. Need More Arrays
(2)如果a1 + 1 < a2,则a2被写到一个新数组,否则,a2被写到和a1相同的数组。(3)如果a2 + 1 < a3.,a3被写到新数组,否则,写到和a2相同的数组。(2)不满足就接着往下遍历===等于是删除了这个元素(因为删除还有可能使得时候的满足条件)我的任务是删除数组中的元素,使得删除后数组经过这个算法创建更多的数组。(1)a1被写入一个新数组。依次类推,知道最后。给了一个长度为n的递增的数组a。(1)如果满足条件就总和加一。
2025-06-10 11:11:45
189
原创 P1873 [COCI 2011/2012 #5] EKO / 砍树
本题要求找出满足条件的最高砍伐高度 H,使得总木材量不少于 M。使用二分查找在 0 到最大树高之间搜索,对每个中间值计算可获得的木材总量,若满足条件则尝试更高的 H,否则降低 H。最终找到最大的符合条件的 H,确保结果准确且高效。
2025-06-09 18:04:25
302
原创 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
384
原创 P1803 凌乱的yyy / 线段覆盖
摘要:题目要求计算在多个比赛时间段不重叠的情况下,最多能参加的比赛数量。输入给出n个比赛的开始和结束时间,输出最大参赛数。解题思路是按结束时间排序后贪心选择最早结束的比赛,确保不与其他选中比赛冲突。时间复杂度为O(n log n)的排序加上O(n)的选择过程,适用于n≤1e6的数据规模。代码示例展示了结构体存储、自定义排序和标记检查的实现方法。
2025-06-02 20:44:12
336
原创 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
182
原创 Codeforces Round 1028 (Div. 2)A题
摘要:题目描述Gellyfish和Flower进行回合制战斗,双方分别拥有角色HP和骑士HP。奇数回合Gellyfish攻击,偶数回合Flower攻击,攻击可选择攻击对方角色或骑士。游戏持续到一方角色HP归零。通过分析双方最优策略,当Gellyfish的最小攻击目标值(min(a,c))大于等于Flower的(min(b,d))时Gellyfish获胜,否则Flower获胜。代码实现直接比较双方最小攻击值进行胜负判断。
2025-06-01 10:39:41
563
原创 L1-093 猜帽子游戏
L1-093 猜帽子游戏分数 15作者 陈越单位 浙江大学宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的。每个人可以看到别人头上的帽子,但是看不到自己的。游戏开始后,每个人可以猜自己头上的帽子是什么颜色,或者可以弃权不猜。如果没有一个人猜错、并且至少有一个人猜对了,那么所有的宝宝共同获得一个大奖。如果所有人都不猜,或者只要有一个人猜错了,所有宝宝就都没有奖。下面顺序给出一排帽子的颜色,假设每一群宝宝来玩的时候,都是按照这个顺序发帽子的。
2025-04-15 15:51:18
288
原创 L1-094 剪切粘贴
使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。abcdefgcdeabfgbfgabfcdeg每次操作后的字符串即为新的当前字符串。在若干次操作后,请给出最后的编辑结果。
2025-04-15 15:34:29
395
原创 7. 解立方根
mid的三次方 < n => left = mid + 0.0001;mid的三次方 > n => right = mid - 0.0001(这里不是之家将值置为mid,而是加和减去一定的值是为了实现精度)输出共 T 行,分别表示每个测试数据的答案(答案保留 3 位小数)。主要问题就是精度问题。给定一个正整数 N,请你求 N 的立方根是多少。第 1 行为一个整数 T,表示测试数据数量。接下来的 T 行每行包含一个正整数 N。利用二分法解决问题。
2025-04-11 21:47:31
266
原创 5. 蓝桥公园
小明有 Q 个观景计划,每个计划包含一个起点 stst 和一个终点 eded,表示他想从 stst 去到 eded。(1)先初始化数组D,为了实现判断,迎合w的值我们将所有值变成2e18(long long 数据类型能够存储的最大值),再将对角线上的值置为0(点自己到自己的距离)。第 22 到 M+1行每行包含三个正整数 u,v,w,表示 u↔v 之间存在一条距离为 w的路。使用算法处理后数组D是存放所有点到某点的最短路径长度。(2)首先我们将数组D开到足够大,存储输入的路径长度(注意题目中是。
2025-04-11 20:51:42
380
原创 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
354
原创 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
218
原创 P1028 [NOIP 2001 普及组] 数的计算
请你求出,一共有多少个合法的数列。两个合法数列 a,b 不同当且仅当两数列长度不同或存在一个正整数 i≤∣a∣,使得 ai=bi。我们利用f(i)表示,当n = i 时的答案。输出一行一个整数,表示合法的数列个数。注意这里的i / 2取向下取整。输入只有一行一个整数,表示 n。这里i / 2也是向下取整。
2025-04-07 22:46:29
400
原创 P2036 [COCI 2008/2009 #2] PERKET
为了做好 Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种配料的苦度的总和。接下来 n 行,每行 2 个整数 si 和 bi,表示第 i 种食材的酸度和苦度。众所周知,美食应该做到口感适中,所以我们希望选取配料,以使得酸度和苦度的绝对差最小。另外,我们必须添加至少一种配料,因为没有任何食物以水为配料的。一行一个整数,表示可能的总酸度和总苦度的最小绝对差。代码中sum,表示在n种食材中选择的食材的数量。
2025-04-07 21:56:19
467
原创 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
310
原创 P1321 单词覆盖还原
只需要遍历整个字符串,因为单词的字符内容是连着的,因此,要想解决覆盖的问题,对于一个boy而言,有一个b,一个bo,或者一个boy都是一样的效果。后贴上单词,会覆盖之前贴上的单词,或者覆盖句号。最终,每个单词至少有一个字符没有被覆盖。我有一个长度为 l 的字符串,最开始时,这个字符串由 l 个句号(两单词,依次贴到这个字符串中。我在这个字符串中,将多次把。
2025-04-06 11:34:31
168
原创 P1149 [NOIP 2008 提高组] 火柴棒等式
给你 n 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。这道题依旧使用暴力即可解决,枚举并且判断所有可能即可解决问题,注意要将范围开大一点。利用数组记录所有0-9数字对应的火柴数。一个整数,能拼成的不同等式的数目。一个整数 n(1≤n≤24)。
2025-04-05 11:43:46
260
原创 P3654 First Step (ファーストステップ)
我们 Aqours 现在已经一共有 K 个队员了,要歌唱舞蹈起来的话,我们得排成一条 1×K 的直线,一个接一个地站在篮球场的空地上呢 (横竖均可)。我们浦之星女子学院的篮球场是一个 R 行 C 列的矩阵,其中堆满了各种学校的杂物 (用。这是一道暴力的问题,分别判断一个点的向下和向右方向上是否满足条件即可。接下来的 R 行 C 列,表示浦之星女子学院篮球场。这个篮球场,好像很久没有使用过的样子啊……Aqours 的真正的粉丝的你,能帮我们算算吗?表示) 好像并不多的样子呢……里面堆满了学校的各种杂物呢……
2025-04-05 10:53:24
300
原创 P3392 涂条纹
现有一个棋盘状的布,分成了 N 行 M 列的格子,每个格子是白色蓝色红色之一,小 a 希望把这个布改成合法图案,方法是在一些格子上涂颜料,盖住之前的颜色。用例范围比较小,我们枚举每一种情况,将每一种对应的对应的涂色的数量存进数组中,然后在数组中求出最小的值即可。只要一个由 N×M 个小方块组成的旗帜符合如下规则,就是合法的图案。小 A 很懒,希望涂最少的格子,使这块布成为一个合法的图案。接下来 N 行是一个矩阵,矩阵的每一个小方块是。一个整数,表示至少需要涂多少块。第一行是两个整数 N,M。
2025-04-04 22:05:50
233
原创 P1088 [NOIP 2004 普及组] 火星人
如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,4 和 5,当它们按正常顺序排列时,形成了 5 位数 12345,当你交换无名指和小指的位置时,会形成 5 位数 12354,当你把五个手指的顺序完全颠倒时,会形成 54321,在所有能够形成的 120 个 5 位数中,12345 最小,它表示 1;这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。
2025-04-04 16:13:46
287
原创 P1706 全排列问题
按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。的方式来实现,这个过程中要注意题目的要求是一个序列中的数要。由 1∼n 组成的所有不重复的数字序列,每行一个序列。这道题也是一道枚举的问题,我们通过使用。来记录每个数的状态,且在使用的过程中要注意。每个数字保留 5 个场宽。bool类型的used数组。
2025-04-02 17:21:55
178
原创 D. Mishkin Energizer-Codeforces Round 1014 (Div. 2)
对于左边情况如果说字符‘T’的数量多于字符‘I’的数量,则可以像这样一样满足题目操作条件的增加L和I的数量,来“减少”T的数量,要想减少一个T的数量则增加一对I和L。对于右边情况如果说字符‘I’的数量多于字符‘T’的数量,则可以像这样一样满足题目操作条件的增加I和T的数量,来“减少”I的数量,要想减少一个I的数量则增加一对I和L。输入一个长度为n的字符串,要求在字符串中,通过在两个不相同的字符中间添加另外一个字符来改变其中三个字符的数字来实现三个字符数相同。灵活使用动态数组的扩容函数。
2025-04-01 22:01:02
864
原创 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
338
原创 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
208
原创 C. Asuna and the Mosquitoes-Codeforces Round 1014 (Div. 2)
然而,如果要想使得自己保持偶数,就可以使得操作的对面的数减少到1就停止,自己还就是偶数,然后就能去接着操作其他奇数。如果后面还有其他偶数的话可以选择一个1把自己变成奇数去操作其他的偶数。我们使用这个规律并且通过整理分析数据得到,最后除了最大值有k-1个1,其他都是0,且最后的最大值为。操作:因为相加是奇数才能进行操作,所以只有一个奇数和一个偶数之间能够进行一个加1和一个减1操作。(1)如果全部都是偶数或者都是奇数则不能进行操作,直接输出数组中的最大值。加到自己身上,使得自己变成奇数。
2025-03-31 00:21:27
1791
1
原创 P2640 神秘磁石
显然,两磁石间最大破坏力取决于磁力大小和磁石间距,那么请问给出长度不超过 n 的一维坐标系,有哪几对坐标间磁石破坏力最大。两个点之间的距离为k,都 <= n并且都是素数。输出所有满足这些要求的数对,如果没有就输出“empty”。所有小于等于 n 的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出。在遥远的阿拉德大陆,有一种神秘的磁石,是由魔皇制作出来的,两个正整数 n,k。
2025-03-30 23:17:58
253
原创 B. Lady Bug -Codeforces Round 1014 (Div. 2)
以上述图为例,红色线构成了一条路线,1的数量就不能超过2,并且蓝色路线上1的数量就不能超过3。我们利用这个规律来编写代码。因为交换次数是无限的,只要位置满足“要求通过将字符串中的数全变成0。”就能够交换,因此如果字符b中的位置中能够。i的取值范围为[2,n]交换路径上的所有的“1”就行。
2025-03-30 21:44:29
1053
原创 C. Two Colors-Educational Codeforces Round 176 (Rated for Div. 2)
(3)假设第一部分要达到的木板颜色数量为i,则第二部分为n-i。第一部分的的数量为数组a中>=i的种类数量,第二部分为数组a中>=n-i的种类数量。(4)然而,题目要求必须是两种不同的颜色,上述我们思路中包含了前后两部分相同的情况,因此需要减去。的最小值的地址,而前面(a+m)则数组最后一个元素再向后一个元素的地址,相减的话就能得到大于等于i的元素数量。我们减去满足这种情况的所有数量就能得到这种i下的所有排列数量。来给栅栏的n个木板染色,且颜色相同的木板是。,返回的是指针,即返回的是大于等于。
2025-03-29 14:10:52
822
原创 B. Array Recoloring-Educational Codeforces Round 176 (Rated for Div. 2)
这种情况是最后一个染色点要么是最左边的,要么是最右边的,另外一个最大值(及刚开始就选的最值)则是最左边的右边的n-1个点中的最大值,要么就是最后边的点的左边的n-1个点中的最大值。:这种情况是无论如何都能够使得最先染的k个点和最后一个点是最大的k+1个点,因此我们从进行排序,直接累加得到最大的k+1个数的和。(3)我们需要遵守染色的规律并且得到最先染色的前面k个点的值和最后染色点的值的总和。(2)将数组中所有的数看作点,所有的点都是红色的。=>因此需要去分析什么情况下值是最优的(根据染色的规律)。
2025-03-29 00:11:27
675
原创 14. 走迷宫 ----蓝桥杯
因为BFS是(利用队列)逐层的“扩散”开的,先到达的话就直接更改他的位置数据了,并且会将用于判断她是否被访问的visited[X2][Y2]变成true了,后面有其他路径能够到达这个点也访问不了了,所以这个时候是最小的步数。
2025-03-23 16:55:25
306
原创 P1249 最大乘积--洛谷
一个正整数一般可以分为几个互不相同的自然数的和,如 3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4。现在你的任务是将指定的正整数 n 分解成若干个互不相同的自然数(也可以不分解,就是这个数字本身)的和,且使这些自然数的乘积最大。
2025-03-23 11:14:38
333
原创 P1331 海战
一行一个字符串,如果船的位置放得正确(即棋盘上只存在相互之间不能接触的方形,如果两个 `#` 号上下相邻或左右相邻却分属两艘不同的船只,则称这两艘船相互接触了)。在一个方形的盘上,放置了固定数量和形状的船只,每只船却不能碰到其它的船。在本题中,我们认为船是方形的,所有的船只都是由图形组成的方形。这样的话就能够将输出这艘船的所有#都标记完,全部标记完后就船数加一。接下来 R 行,每行 C 个字符,为 `#` 或 `.`。`#` 表示船只的一部分,`.` 表示水。求出该棋盘上放置的船只的总数。
2025-03-20 16:51:38
424
原创 1931C. Make Equal Again
2.当数组中有不同元素时。定义k1和k2分别来计数从前往后和从后往前连续相同元素的个数,利用for循环求出,期间分别定义flag1和flag2用来判断是否相同的数不再连续,不再连续后续k的值不再改变。1.如果数组中元素全部一致或者只有一个元素直接输出0。(定义一个flag来标记数组中是否全部一致)2.逐个输入t个测试项,第一行包含数组中元素的个数,第二行逐个输入元素。=a[n],输出n-max(k1,k2)。(1)a[1]==a[n],直接输出n-(k1+k2);使得数组全部元素变成一致的最小的元素个数。
2024-06-14 10:02:08
304
原创 A. Problem Generator
A. Problem GeneratorVlad is planning to hold m rounds next month. Each round should contain one problem of difficulty levels 'A', 'B', 'C', 'D', 'E', 'F', and 'G'.Vlad already has a bank of n problems, where the i-th problem has a difficulty level of ai. T
2024-06-13 10:11:45
1053
原创 P1644 跳马问题--洛谷
从(0,0)开始,设(a,b)为经过点的坐标,要求过程中a>0,a<n,b>0,b<m;1.确认题目的状态包括边界。最终位置为(m,n)。2.找到状态转移方式。3.找到问题的出口。
2024-06-13 00:22:31
314
原创 B. 378QAQ and Mocha‘s Array----codeforces
3.将不能被整除的数加入到动态数组中,然后对动态数组进行排序,如果数组中所有的数能够被最小的数值整除那就输出Yes,否则输出No。2.对输入的数组进行排序,如果其余的所有数能够被最小的一个数值整除,那就输出Yes。1.如果数组中有1那就直接输出Yes。
2024-06-12 23:50:27
163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人