- 博客(51)
- 收藏
- 关注
原创 P8669 [蓝桥杯 2018 省 B] 乘积最大
给定N个整数A1A2⋯AN。请你从中选出K个数,使其乘积最大。请你求出最大的乘积,由于乘积可能超出整型范围,你只需输出乘积除以1000000009(即1099)的余数。注意,如果X0, 我们定义X除以1000000009的余数是0−((0−xmod1000000009。
2025-04-10 20:31:00
465
原创 P10914 [蓝桥杯 2024 国 B] 跳石
小明正在和朋友们玩跳石头的小游戏,一共有n块石头按1到n顺序排成一排,第i块石头上写有正整数权值ci。如果某一时刻小明在第j块石头,那么他可以选择跳向第jcj块石头(前提jcj≤n)或者跳向第2j块石头(前提2j≤n),没有可跳跃的目标时游戏结束。假如小明选择从第x块石头开始跳跃,如果某块石头被小明经过(“经过” 指存在某一时刻小明在这个石头处),则将这块石头的权值纳入得分集合Sx,那么小明从第x块石头开始跳跃的得分为∣Sx∣。
2025-04-03 00:48:19
623
原创 P11044 [蓝桥杯 2024 省 Java B] 食堂
S 学校里一共有a2个两人寝、a3个三人寝,a4个四人寝,而食堂里有b4个四人桌和b6个六人桌。学校想要安排学生们在食堂用餐,并且满足每个寝室里的同学都在同一桌就坐,请问这个食堂最多同时满足多少同学用餐?
2025-04-02 01:08:39
671
原创 P2758 编辑距离 P1020 导弹拦截(未优化)P102 统计单词个数 P1052 过河
设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。AB均只包含小写字母。
2025-03-31 00:17:12
805
原创 最长公共子序列
• 这种方法有效地解决了最长公共子序列问题,是动态规划和路径回溯的经典应用。• 通过动态规划方法,构建了一个二维数组。4.getLCS 函数:路径回溯。开始,逐步构建出最长公共子序列。3.LCS 函数:动态规划求解。最长公共子序列(LCS)求解。来存储子问题的解,同时使用。数组进行路径回溯,从。
2025-03-16 18:59:07
182
原创 补充二分LIS
这是一个简单的动规板子题。给出一个由nn≤5000个不超过106的正整数组成的序列。请输出这个序列的的长度。最长上升子序列是指,从原序列中取出一些数字排在一起,这些数字是的。
2025-03-15 22:23:07
948
原创 Bellman-Ford算法
中找到从一个源点到所有其他顶点的最短路径,即使图中包含负权边。与Dijkstra算法不同,Bellman-Ford算法能够处理负权边,并且可以检测图中是否存在。它通过逐步松弛(relaxation)图中的所有边,逐步逼近最短路径的值。如果图中没有负权边,且边数较多,通常推荐使用Dijkstra算法,因为它的时间复杂度更低(Bellman-Ford算法是一种用于解决。Bellman-Ford算法的核心思想是。
2025-03-15 16:11:39
257
原创 P1075质因数分解 P2512糖果传递 P4447分组 P1080国王游戏 P4053建筑抢修
有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。
2025-03-15 16:07:27
664
原创 贪心:P1842奶牛玩杂技 P1223排队接水 P1209修理牛棚 P1843奶牛晒衣服 P1803凌乱的yyy / 线段覆盖
Farmer John 养了N头牛,她们已经按1∼N依次编上了号。FJ 所不知道的是,他的所有牛都梦想着从农场逃走,去参加马戏团的演出。可奶牛们很快发现她们那笨拙的蹄子根本无法在钢丝或晃动的的秋千上站稳(她们还尝试过把自己装在大炮里发射出去,但可想而知,结果是悲惨的)。最终,她们决定练习一种最简单的杂技:把所有牛都摞在一起, 比如说, 第一头牛站在第二头的身上, 同时第二头牛又站在第三头牛的身上…最底下的是第N头牛。
2025-03-12 15:18:26
517
原创 数学,数论:P8682等差数列 P11003蓝桥村的真相 P4397聪明的燕姿(未解决)P10900数字诗意 P8646包子凑数
数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N个整数。现在给出这N个整数,小明想知道包含这N个整数的最短的等差数列有几项?
2025-03-09 20:05:19
769
原创 # P8754 [蓝桥杯 2021 省 AB2] 完全平方数
一个整数a是一个完全平方数,是指它是某一个整数的平方,即存在一个 整数b,使得ab2。给定一个正整数n,请找到最小的正整数x,使得它们的乘积是一个完全平方数。
2025-03-04 22:37:46
856
原创 筛法求欧拉函数,求约数,求约数和
1n中与n互质的数的个数称为欧拉函数,记为φ(n)。欧拉函数的性质若p是质数,则φ§=p-1若p是质数,则φ(pk)=(p-1)p(k-1)积性函数:若gcd(m,n)=1,则φ(mn)=φ(m)φ(n)欧拉函数的计算公式由唯一分解定理 n=Π(从1到s)p_iα_i=p_1得φ(n)=n * Π(从1到s)(p_i^(α_i-1) * (p_i-1))
2025-03-04 22:37:13
818
原创 P10904 [蓝桥杯 2024 省 C] 挖矿
小蓝正在数轴上挖矿,数轴上一共有n个矿洞,第i个矿洞的坐标为ai。小蓝从0出发,每次可以向左或向右移动1的距离,当路过一个矿洞时,就会进行挖矿作业,获得1单位矿石,但一个矿洞不能被多次挖掘。小蓝想知道在移动距离不超过m的前提下,最多能获得多少单位矿石?
2025-03-04 21:32:07
1780
原创 Floyd算法,Dijkstra算法及优化
Floyd算法:适用于多源最短路径问题,时间复杂度 (O(N^3)),适用于稠密图。Dijkstra算法:适用于单源最短路径问题,时间复杂度 (O((N + M) \log N)),适用于稀疏图。优化方法:使用邻接表、优先队列等数据结构优化Dijkstra算法,减少时间复杂度。
2025-03-02 18:54:37
656
原创 线性筛(欧拉筛)
线性筛(也称为欧拉筛)是一种高效的算法,用于筛选出小于等于某个整数 ( n ) 的所有质数,同时避免了传统埃拉托斯特尼筛法(埃氏筛)中重复筛选的问题。线性筛的时间复杂度为 ( O(n) ),因此在处理大规模数据时非常高效。线性筛的核心思想是利用每个合数的最小质因数来筛选。每个合数只会被它的最小质因数筛掉一次,从而保证了每个数只被处理一次,达到线性时间复杂度。创建一个布尔数组is_prime,标记每个数是否为质数,初始时假设所有数都是质数(除了0和1)。创建一个数组primes,用于存储找到的质数。
2025-03-02 18:52:55
444
原创 洛谷P1004方格取数(两个题解)P1359租用游艇 P2285打鼹鼠 P1725琪露诺 P1886滑动窗口/单调序列
NOIP 2000 提高组 T4。
2025-03-02 15:37:02
726
原创 洛谷 P2440木材加工 P2678跳石头 P1314聪明的质检员 P1084借教室 P1902刺杀大师 P1163银行贷款
都是二分+很裸的算法,就不写繁冗的题解了注意:求xmax则 l 右移反之左移。
2025-03-01 11:30:01
607
原创 第七周(static 关键字,lower_bound,upper_bound,stl)
在 std::set 和 std::map 中的查找操作并不是查找地址,而是查找特定的键或值,并返回一个指向该元素的 迭代器(Iterator)。1.static修饰了局部变量x,令局部变量x变成静态的,且只能初始化一次,使得每次test()函数结束时局部变量x都不销毁,再次进入test()函数时则保留原有数值运行,因此x++数值越来越大。它假设区间是有序的(升序排列),如果区间中存在多个相同的元素,它会返回第一个满足条件的元素。迭代器的作用不仅仅是“查找地址”,它提供了对容器中元素的访问和操作能力。
2025-02-20 19:56:42
731
原创 DPのfor a week
选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大如取数字4和6,可以得到最大值121239。将字符串翻转,然后把所有 d 换成 p,把所有 p 换成 d。
2025-02-09 20:33:03
1054
原创 Codeforces Round 995 (Div. 3)
有 m 个问题列表,每个列表缺少一个问题,用 ai 表示。用贪心,尽量将蛇放置在靠左的位置,如果蛇需要扩展且尚未放置,则将其放置在当前最大位置的右侧。商店需定价圣诞树,顾客有 ai 和 bi 两个价格限制,分别对应正面和负面评价。商店需定价圣诞树,顾客有 ai 和 bi 两个价格限制,分别对应正面和负面评价。m计划进行一次远足,第一天走 a 公里,第二天走 b 公里,第三天走 c 公里,之后循环。如果m不知道任何问题的答案,他将无法通过任何问题列表的考试,输出结果为全 ‘0’。
2025-02-07 22:43:17
262
原创 第六周0125
对于一个无向图,如果从任意一个顶点都可以通过路径到达其他任意顶点,那么这个图被称为连通图(Connected Graph)。如果图中存在某些顶点无法通过路径到达其他顶点,则称该图是非连通的。连通性是图论中的一个重要概念,用于描述图中顶点之间的可达性。在无向图中,连通性是一个重要的性质,用于描述图的结构。边的表示:边用一对顶点表示,例如 (u,v),表示顶点 u 和顶点 v 之间有一条边。如果要使这个图连通,可以添加一条边 (3,4),这样所有顶点都可以通过路径相互到达。连通分量 2:包含顶点 4 和 5。
2025-01-25 00:20:26
213
原创 Codeforces Round 998 (Div. 3)(F题)
Alice 的交换函数的特点是:交换 a[i] 和 b[j] 的同时,也会交换 b[i] 和 a[j]。比较两个图的连通分量,若顶点在 F 和 G 中的连通分量不同,则需操作。某个位置的值不符合要求,但可以通过交换操作调整到合适的位置,则继续检查。贪心:对于每个位置 i,如果 a[i] 和 b[i] 的值不符合递增序列的要求,我们需要判断是否可以通过交换操作将它们调整到合适的位置。题解:尝试三种可能的a3值:a1+a2 a4−a2和 a5−a4,并计算每种情况下的满足条件数量,最终输出最大值。
2025-01-23 00:48:47
731
原创 P1049 装箱问题 P1048 采药P1040 加分二叉树
有一个箱子容量为V,同时有n个物品,每个物品有一个体积。现在从n个物品中,任取若干个装入箱内(也可以不取),使箱子的剩余空间最小。输出这个最小值。题解:装箱问题使用动态规划解决。dp[j] 表示容量为 j 的箱子可以达到的最大体积。逆序遍历更新 dp,最终输出 V - dp[V]。
2025-01-12 09:57:31
987
原创 第五周枝节
原来2,12,22,32,42,52,62,72,82,92等值都只能挂在下标2的位置,但是当空间变为100,所有的值都有了自己对应的下标位置,原本长度为10的哈希桶,直接变为1(桶的长度)函数模板允许你定义一个函数,该函数可以接受不同类型的参数并返回不同类型的值。相比于数组,优势在于自动管理内存,可以在运行时动态地增加或减少其大小,这使得它比固定大小的数组更灵活.即数据个数所占整个空间的比率,每插入一个位置,就让负载因子+1,一般来说,负载因子达到0.7就要进行。类的一个成员函数,用于改变向量的大小。
2025-01-12 09:45:22
731
原创 Codeforces Round 993 (Div. 4)
题解:开始时只需要把蜘蛛分成两种状态,有1个和不止一个(因为第二轮前者变成0,后者变成1),用vector来存储每只蜘蛛的玩偶个数,再用两个vector来存储该蜘蛛昨年和今年的玩偶状态(昨年是0,那么如果对应是r[i]的话,今年是1)题解:正常来说,应该枚举,但是呢,因为还没有考虑重复的情况,所以直接减一就可以了,注意vector动态数组的使用,定义的是大小为n的向量。题解:先依次枚举,如果当前a[i]不是众数,就向前遍历,改变最大的那个数为为a[i],然后发现会改变a[i]前的众数,显然不可行。
2025-01-12 09:31:18
640
原创 第四周枝节
##在写回文题的时候有以下函数:高精度反转:(在计算高精度时,我们输入的是从高位到低位,但在计算时从低位到高位,因此需要反转)于是在 C++STL 中有了reverse函数输出:5 4 3 2 12 1 3 4 5。
2024-12-29 21:29:05
595
原创 P1051 谁拿了最多奖学金 P1031均分纸牌
某校的惯例是在每学期的期末考试之后发放奖学金。800080801140008585808020009090100085858508080只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。
2024-12-29 14:21:37
956
原创 P1008三连击 P1014 Cantor表 P1019单词接龙
将129共9个数分成3组,分别组成3个三位数,且使这3个三位数构成123的比例,试求出所有满足条件的3个三位数。题解:用一个数组来表示是否出现的次数,相加为9时说明都只出现了一次,
2024-12-25 16:57:23
766
原创 P1002 过河卒(待优化)P1007独木桥 P1004方格取数(待优化)
写出🐎可以跳的位置,打上标记,用bfs显然有点多余,b的位置bxby是给出的,如果被马拦住就跳过,遍历一遍,用上方格子和左边的格子来表示当前格子的状态(先把所有格子设为1)(那么当格子就是x+y)算法复杂度是O(n2),待优化。
2024-12-25 16:04:04
439
原创 遍历,二叉树
题意:找有一个儿子的节点个数(题解:先序遍历中,如果A只有一个子树B,那么在先序遍历中A一定在B前,在后序遍历中B一定在A前,即关键点在于找前序中相邻的两个字符在后序中有没有翻转过来输出。
2024-12-19 21:50:36
1052
原创 P10110 P1998 P1999
题目描述火车从始发站(称为第 1 站)开出,在始发站上车的人数为 a,然后到达第 2 站,在第 2 站有人上、下车,但上、下车的人数相同,因此在第 2 站开出时(即在到达第 3 站之前)车上的人数保持为 a 人。从第 3 站起(包括第 3 站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第 n−1 站),都满足此规律。现给出的条件是:共有 n 个车站,始发站上车的人数为 a,最后一站下车的人数是 m(全部下车)。
2024-12-19 21:45:41
640
原创 P1379 八数码问题 P1588抓住那头牛 P4667
在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。
2024-12-19 21:25:28
949
原创 栈,DFS(P1044解法较多,待学习相关内容后理解)
题解:给了两种答案,记忆化搜索和卡特兰数输入整数,输出序列的总数目。这两部分互相影响,所以一个x的取值能够得到的所有可能性为f[x-1] * f[n-x]给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。比x小的数有x-1个,所以这些数的全部出栈可能为f[x-1]比x大的数有n-x个,所以这些数的全部出栈可能为f[n-x]由于x是最后一个出栈的,所以可以将已经出栈的数分成两部分。设 x 为当前出栈序列的最后一个,则x有n种取值。为甚么还有终点是障碍,,,
2024-12-13 16:09:55
767
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人