自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

初心如磐,逐梦前行||b站@一个空客迷

初心如磐,逐梦前行||b站@一个空客迷

  • 博客(36)
  • 收藏
  • 关注

原创 洛谷 P2851 [USACO06DEC] The Fewest Coins G

摘要: 题目要求农夫John支付金额T时硬币转手次数最少,需考虑他支付硬币和店主找零的硬币总数。使用两次完全背包:dp1计算店主找零的最少硬币数(无限硬币),dp2计算John支付的最少硬币数(有限硬币,需二进制优化分解)。最终枚举所有可能的支付金额i(i≥T),取dp1[i-T]+dp2[i]的最小值即为答案。若无法支付则输出-1。

2025-10-31 08:03:46 698

原创 线性DP讲解及例题

本文介绍了线性动态规划(线性DP)的基本概念和典型例题。首先通过最大子段和问题展示了线性DP的核心思路,即以递推方式求解序列问题。接着通过数字三角形、过河卒、硬币问题和假期规划等例题,详细讲解了不同场景下线性DP的应用方法,包括状态转移方程的设计、边界条件处理等。文章强调线性DP本质上是一种高效的递推优化方法,适合处理序列最优解问题,并提供了各题的代码实现。适合初学者通过具体问题理解线性DP的基本思想和实现技巧。

2025-10-30 08:44:22 718

原创 CSP-J2024 T1 - T3 详解 && CSP -J2025 注意事项

本文解析了CSP-J2024考试中T1至T3的题目解法。T1使用桶排统计缺失扑克牌;T2通过DFS实现地图探险,强调多组测试需清空数据;T3采用数学规律解题,针对n模7的不同余数给出相应解法。文章提供了AC代码,适合初学者参考。同时提醒考生注意2025年考试中的这些要点,如基础算法的应用和数学思维的培养。

2025-10-29 16:55:00 2452

原创 完全背包讲解及例题

本文讲解了完全背包问题的基本概念与代码实现。完全背包是动态规划中的经典问题,允许物品无限选取,采用正序更新策略优化计算。文章提供了C++模版代码,并通过洛谷P1616、P1832等例题展示应用。对于难度较高的题目(如P1853投资效益、P5662纪念品),作者给出了优化思路和解决代码,最后均成功通过测试。适合算法初学者学习完全背包的基本原理和实际应用。

2025-10-29 11:23:44 1134

原创 01 背包讲解及例题

本文介绍了01背包问题的基本概念和代码实现,通过多道例题详细讲解了01背包的应用。文章首先用pair存储物品价值和质量,给出关键解法:使用一维数组dp[j]表示容量为j时的最大价值,强调必须逆序遍历容量。随后通过4道洛谷例题(P1048采药、P1510精卫填海、P1926刷题大军、P1466集合子集和)进行实战演练,展示了不同场景下01背包的变形应用,包括处理体积超额、时间分配优化等问题。最后在P1466题中特别指出需要特判奇数和的情况,并给出最终AC代码。全文以幽默风格贯穿,通过具体代码示例帮助读者掌握0

2025-10-28 15:35:39 1112

原创 严正声明!!!

今天登上优快云一看,发现名字被改了,一看账号,果然是被盗号了打开我的文章一看,直接震碎了我的三观昨天是周日,大概是有人上课的时候用了我的账号胡说八道,并且是有两个人盗了我的账号,一个是上午,一个是下午。上午那个还正常,发了发题解。我们接着往下看。。。

2025-10-27 18:35:25 566

原创 STL实用函数整理

STL实用函数摘要:本文整理了C++ STL中常用的实用函数。数组相关包括求和(accumulate)、填充(fill)、排序判断(is_sorted)、二分查找(lower/upper_bound)、最值查找(max_element/min_element)、部分排序(nth_element/partial_sort)、前缀和(partial_sum)、反转(reverse)等。字符串处理包含类型转换(atoi/stoi/to_string)。还包含最大公约数(__gcd)等工具函数。这些函数简化了常见操

2025-10-30 11:05:57 1026

原创 梦熊CSP - J模拟赛 洛谷 P14305 【MX-J27-T2】转换

在 C++ 里,编译器在表达式求值时,如果发现参与运算的对象类型不一致,会尝试进行隐式类型转换。为了方便,我们只给出表达式中每个变量的类型,而不涉及其变量名称。,这道题就是个模拟,首先要清除逗号之前的所有内容,然后直接循环求出是否有。对于第一组数据,没有任何运算符,因此返回值类型即为唯一的变量的类型。你希望求出该表达式运算结果的类型。运算的运算结果类型与其第二个运算对象相同。为表达式中的运算对象数量。(这里不用考虑符号的问题),然后开始按。个变量对应的类型名称(特别地,】中有对应的更严格的约束。

2025-10-28 20:02:59 948

原创 洛谷 P1619 解一元二次方程的烦恼

这道题要求处理包含乱码的数字字符串,识别其中的非负整数N,并进行素性判断和质因数分解。主要步骤包括:1)从输入字符串中提取有效数字;2)若数字超过4e7则输出过大提示;3)对合法数字判断素数,是素数输出"Yes!",否则分解质因数输出。需要注意处理输入中的符号和特殊字符,以及多组数据间的格式要求。算法涉及素数判断和质因数分解,需注意处理边界情况如数字小于2的情况。

2025-10-21 10:53:56 1167

原创 洛谷 P1042 [NOIP 2003 普及组] 乒乓球

这篇题解介绍了洛谷P1042乒乓球比赛的计分程序实现。题目要求处理两种赛制(11分和21分)下的比赛记录,根据输入的W/L字符序列统计比分并按规则输出。关键点包括:1) 正确处理输入遇到E时停止;2) 两种赛制下判断比赛结束的条件(一方得分≥11/21且领先≥2分);3) 注意处理未完成的最后一局比分。代码通过遍历字符串统计得分,在满足结束条件时输出并重置比分,最后补充输出未完成的局分。题解还指出了测试数据的特殊情况和注意事项。

2025-10-19 18:55:45 1314

原创 洛谷 P2141 [NOIP 2014 普及组] 珠心算测验

题目摘要:珠心算测验要求统计一个正整数集合中有多少个数等于集合中另外两个不同数之和。给定n个不同的正整数,输出满足条件的数字个数。例如输入4个数1,2,3,4时,由于3=1+2和4=1+3,故输出2。数据范围n≤100,数值≤10,000。解题通过排序后三重循环暴力枚举实现,时间复杂度O(n³)。(128字)

2025-10-17 09:40:38 790

原创 动态规划例题——洛谷 P1060 [NOIP 2006 普及组] 开心的金明

本文介绍了洛谷P1060题(开心的金明)的动态规划解法。该题是经典的01背包问题,要求计算在给定背包容量和物品重量、价值的情况下能获得的最大总价值。通过使用pair存储物品的重量和价值,并采用动态规划方法求解:定义dp数组表示容量为j时的最大价值,通过双重循环更新dp值,最终输出dp[m]作为结果。文章还简要介绍了C++中pair的概念和使用方法。

2025-09-25 00:00:00 639

原创 动态规划例题——洛谷 P1359 租用游艇

本文介绍了洛谷P1359游艇租赁问题的动态规划解法。题目要求在n个游艇站中,从第1站到第n站找到最便宜的租用方案。解题思路是使用动态规划数组dp[i]存储到达第i站的最低费用,通过比较直接到达和分段到达的费用来更新最优解。代码实现中,首先输入站点间的租金信息,然后初始化dp数组,通过双重循环计算最优解。最终输出dp[n]即为从第1站到第n站的最低租金。该方法的时间复杂度为O(n²),适用于n≤200的规模。

2025-09-24 14:28:52 587

原创 CSP初赛——STL中的函数整理

【代码】CSP初赛——STL中的函数整理。

2025-09-20 00:00:00 899

原创 deepseek认为明天CSP-J/S初赛的重点

📌 CSP-J/S初赛备考精华 高频考点: 算法与数据结构(排序、栈/队列、二叉树、动态规划)占比最高 计算机基础(冯·诺依曼结构、存储层次、进制转换)必考 C++语法(指针、递归、STL)是核心难点 数学(补码、位运算)常出计算题 题型策略: 1️⃣ 单选:善用排除法,重点抓基础概念 2️⃣ 阅读程序:逐行分析+变量追踪表 3️⃣ 完善程序:理解算法思想再填空 组别差异: J组:主攻基础语法和简单数据结构 S组:需掌握图论、DP、内存管理等进阶内容 🔥 冲刺建议:限时刷最近3年真题,重点突破薄弱环节

2025-09-19 18:15:03 3191 1

原创 CSP-S——各算法可以实现的问题

本文总结了CSP-S竞赛中各算法能解决的经典问题。排序算法可用于数据排序、Top K等问题;搜索算法如二分查找、DFS/BFS适用于路径查找;图论算法包括最短路径、最小生成树等;动态规划解决背包、LCS等优化问题;贪心算法适用于区间调度、数据压缩;字符串算法处理文本匹配;其他如回溯、遗传算法解决组合优化问题。这些算法覆盖了数据结构、图论、优化等核心计算领域。

2025-09-18 00:00:00 1079

原创 CSP——文件后缀名

本文分类总结了常见文件后缀名及其对应的文件类型和用途。主要包括: 文本/文档(.txt, .pdf, .docx等) 图片(.jpg, .png, .svg等,区分压缩/矢量特性) 音频(.mp3, .wav, .flac等,对比有损/无损格式) 视频(.mp4, .avi, .mkv等主流容器格式) 压缩包(.zip, .rar, .tar.gz等) 可执行文件(.exe, .apk, .sh等系统相关格式) 网页/代码(.html, .js, .py等开发文件) 各类后缀均标注关键特性(如XML新版格式

2025-09-17 16:33:54 444

原创 CSP初赛——各排序方法的时间复杂度表

常见排序算法时间复杂度及特性对比:冒泡、插入排序时间复杂度为O(n²)且稳定;选择排序同样O(n²)但不稳定。更高效的归并、堆排序均为O(n log n),其中归并稳定而堆排序不稳定。快速排序平均O(n log n)但不稳定,最坏O(n²)。特殊排序如计数、桶、基数排序可达线性复杂度且稳定。空间复杂度方面,归并排序需要O(n)额外空间,快速排序为O(log n)~O(n),多数其他算法为O(1)。稳定性方面,冒泡、插入、归并和三种特殊排序稳定,其余不稳定。

2025-09-17 15:55:53 207

原创 CSP-S初赛deque(双端队列)中的迭代器及函数

本文介绍了C++双端队列(deque)的迭代器和常用函数。迭代器部分包括正向迭代器(begin/end)和反向迭代器(rbegin/rend),以及它们的常量版本(cbegin/cend等),详细说明了各迭代器的指向位置和修改权限。函数部分列举了16个常用操作,包括size()、empty()等基本信息查询,front()、back()等元素访问,push/pop等队列操作,以及insert、erase等修改操作,并标注了C++11新增的shrink_to_fit()函数。这些内容为理解和使用deque容器

2025-09-17 15:37:46 1136

原创 CSP-S初赛中的linux命令整理

本文整理了CSP-S初赛中常用的Linux命令,分为文件操作、查看编辑、搜索过滤、权限管理、压缩归档等类别。包含ls、cd等基础命令,grep、find等搜索命令,以及chmod、tar等实用命令。每个命令配有简要说明,适合作为Linux基础操作的快速参考手册。

2025-09-17 14:24:25 559

原创 CSP-J初赛for(auto)用法

本文介绍了C++中范围for循环的基本格式和使用方法。范围for循环适用于数组、vector等拥有begin/end成员的序列类型,通过auto自动推导元素类型。若需修改序列元素,需将循环变量声明为引用类型。文章提供了数组和vector的读写操作示例,并通过等价代码演示了范围for循环与传统迭代器循环的对应关系,帮助理解其底层实现机制。关键点包括:序列类型要求、auto类型推导、引用类型修改元素等。

2025-09-05 20:23:50 595

原创 (动态规划例题)01背包问题

本文介绍了一个经典的0-1背包问题。给定背包容量M和N件物品(每件有重量和价值),要求选择物品装入背包,使总价值最大且不超过容量限制。文章提供了C++代码实现,使用动态规划方法,通过pair存储物品属性,并利用一维数组优化空间复杂度。示例输入为容量10和4件物品,输出最大价值12。代码通过逆向遍历背包容量来避免重复计算,最后输出最优解。该问题适合作为动态规划的入门练习。

2025-08-19 16:55:40 796

原创 洛谷 P1115 最大子段和

该问题要求在一个整数序列中找到连续子段的最大和。采用动态规划解法,定义dp数组记录以每个位置结尾的子段最大和,状态转移方程为dp[i] = max(dp[i-1]+a[i], a[i])。初始化ans为极小值,遍历时不断更新最大值。时间复杂度O(n),空间复杂度O(n),适用于大规模数据(n≤2×10^5)。示例输入[2,-4,3,-1,2,-4,3]的最大子段和为4(子段[3,-1,2])。

2025-08-19 15:42:34 319

原创 (动态规划例题)导弹拦截

摘要 本题是一个经典的导弹拦截问题,要求计算一套拦截系统最多能拦截多少枚导弹。系统的特点是每次拦截的高度不能高于前一次拦截的高度。题目转化为求最长不上升子序列的长度。输入导弹数量n(n≤15)和导弹高度序列,输出最长不上升子序列的长度。例如,输入8枚导弹的高度[389,207,155,300,299,170,158,65],输出最长拦截数为6。解题采用动态规划方法,时间复杂度O(n²)。需要注意数组下标从1开始,避免越界,并正确初始化dp数组。

2025-08-19 06:34:48 1415

原创 [IOI 1994] 数字三角形 Number Triangles

本文解决数字金字塔路径最大和问题。给定一个r行的数字金字塔,从顶部到底部任意路径,每一步可向左下或右下移动,求路径数字和的最大值。采用动态规划方法,自底向上计算每个位置的最大路径和:dp[i][j] = a[i][j] + max(dp[i-1][j-1], dp[i-1][j])。最终遍历最底层找出最大值。时间复杂度O(r²),空间复杂度O(r²),适用于r≤1000的情况。示例输入5行数据,输出最大和30。

2025-08-18 09:13:52 410

原创 洛谷 B3969 [GESP202403 五级] B-smooth 数

该程序用于计算不超过n的B-smooth数的数量。B-smooth数是指其最大质因子不超过B的正整数。程序首先使用筛法预处理每个数i的最大质因子st[i],然后遍历1到n统计满足st[i]≤B的数的个数。输入为n和B,输出满足条件的数的数量。例如输入"10 3"时,输出7,因为1-10中除了5,7外的数都是3-smooth数。程序时间复杂度为O(n log log n),适用于n和B在1e6范围内的数据规模。

2025-08-17 14:12:38 235

原创 洛谷 P5661 [CSP-J2019] 公交换乘

题目要求计算小轩使用公共交通后的总花费,考虑地铁和公交车的优惠规则。地铁乘坐后获得优惠票,45分钟内可免费搭乘票价不超地铁票价的公交,优惠票按最早获得优先使用。代码实现用pair数组存储优惠票,遍历查询符合条件的票进行抵扣。时间复杂度为O(n^2),在数据规模较大时可能不够高效,但通过了题目测试。

2025-08-17 13:57:51 1361

原创 洛谷 P1102 A-B 数对(超简便的STL版)

摘要: 题目要求统计正整数序列中满足$A-B=C$的不同数对个数。给定$N$个数和$C$,通过排序后利用upper_bound和lower_bound快速计算每个元素$a[i]$对应的$a[i]+C$的出现次数,累加得到答案。核心代码通过二分查找优化效率,时间复杂度为$O(N\log N)$,适用于大规模数据($N \leq 2 \times 10^5$)。示例输入4 1 [1,1,2,3]输出3,对应数对为(2,1)、(2,1)、(3,2)。

2025-08-16 13:29:04 320

原创 洛谷 P1996 约瑟夫问题(队列题解)

摘要 本文介绍了约瑟夫问题的解决方法。题目描述n个人围成一圈,从第1人开始报数,数到m的人出列,重复此过程直到所有人出列。使用C++队列实现该算法:初始化队列后,循环将队首元素移至队尾m-1次,输出并移除第m个元素,直到队列为空。示例输入10 3对应输出3 6 9 2 7 1 8 5 10 4。该解法时间复杂度为O(n*m),适用于n,m≤100的情况。

2025-08-15 19:38:31 165

原创 洛谷 P2919 [USACO08NOV] Guarding the Farm S

摘要:题目要求在N×M的矩阵中统计山顶数量。山顶定义为由相同高度且被边缘或更低元素包围的相邻区域。解决方法是:1)将矩阵元素按高度降序排序;2)遍历每个高点,检查其8个方向是否存在更高点;3)若无更高点,则通过DFS标记连通区域并计数。最终输出山顶总数。代码使用结构体存储矩阵元素,排序后遍历处理,结合DFS标记避免重复统计。示例输入8×7矩阵输出3个山顶。

2025-08-14 20:24:39 1636

原创 洛谷 P1090 [NOIP 2004 提高组] 合并果子

本文介绍了如何利用堆结构高效解决果子合并问题。题目要求将n堆果子合并为一堆,每次合并消耗的体力等于两堆果子重量之和,目标是找到使总体力消耗最小的合并方案。通过分析可知,每次选择当前最小的两堆进行合并是最优策略。使用小根堆(优先队列)可以高效实现这一过程,其时间复杂度为O(nlogn)。具体实现步骤包括:将所有果子数量存入小根堆,循环取出最小的两堆合并,计算体力消耗,并将新堆重新插入堆中,直到只剩一堆。该算法能正确计算出最小体力消耗值,适用于规模较大的输入数据。

2025-08-14 01:00:00 2396

原创 洛谷P2920 [USACO08NOV] Time Management S

题目要求计算商人约翰能够开始工作的最晚时间,使得所有工作都能按时完成。每个工作有完成所需时间 ( T_i ) 和截止时间 ( S_i )。通过贪心算法,将工作按截止时间升序排序后,检查是否存在可行解。若可行,则进一步计算最晚开始时间。代码首先排序工作,检查可行性,再通过遍历计算最晚开始时间。若无法完成所有工作,则输出 -1。

2025-08-13 19:09:02 889

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

题目P1803要求计算在给定n个比赛时间段的情况下,最多能参加多少个互不重叠的比赛。解题思路是贪心算法:将所有比赛按结束时间排序,依次选择结束时间最早且不与已选比赛冲突的比赛。C++代码实现中,首先对比赛按结束时间排序,然后遍历检查每个比赛是否与前一个已选比赛时间不重叠,统计最大可参赛数。时间复杂度的主要瓶颈在排序步骤O(nlogn),适用于大规模数据(n≤10^6)。样例输入3个比赛时间段(0-2,2-4,1-3)时,最优解是参加2个比赛。

2025-08-13 16:46:06 698

原创 二分查找(图文并茂)

摘要:本文介绍了二分查找的实现方法。首先通过示例演示了二分查找过程:在有序数组中查找目标值2的下标,详细说明了左右边界和中间值的计算过程。接着提供了两种代码实现:数组版使用循环和条件判断实现二分查找;STL版利用lower_bound函数快速定位元素。两种方法都包含查找失败时的处理逻辑,完整展示了二分查找从原理到实践的实现过程。

2025-08-13 13:18:13 337

原创 前缀和、差分

本文介绍了三种基础算法:一维前缀和、二维前缀和和一维差分。一维前缀和通过预处理数组快速计算区间和;二维前缀和扩展至矩阵,通过容斥原理计算子矩阵和;一维差分则用于高效实现区间增减操作,最后通过前缀和还原数组。三种算法均采用预处理思想,将查询/修改操作的时间复杂度优化至O(1)或O(n),适用于大规模数据处理。代码示例包含输入处理和核心公式实现,并强调了long long类型防止溢出。

2025-08-12 20:36:11 508

原创 一维差分代码

本文介绍了一个使用差分数组高效处理区间修改的算法。给定一个长度为n的数组和m次区间修改操作(每次将区间[l,r]内的元素加x),程序首先构建差分数组d,其中d[i]=a[i]-a[i-1]。然后通过修改差分数组的端点值(d[l]+=x,d[r+1]-=x)来高效实现区间加减。最后通过差分数组重构原数组并输出结果。该方法将区间修改的时间复杂度从O(n)优化到O(1),适用于大规模数据操作。

2025-08-12 09:46:28 370

空空如也

空空如也

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

TA关注的人

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