- 博客(37)
- 收藏
- 关注
原创 初识动态规划
本文介绍了动态规划的基本概念和应用实例。主要内容包括: 纸币问题1(P2842):使用动态规划求解最少纸币数量问题,定义状态f[w]表示凑出金额w的最小纸币数,通过转移方程f[w]=min(f[w],f[w-ai]+1)求解。 数字三角形问题(P1216):自底向上的动态规划解法,通过状态转移方程a[i-1][j]+=max(a[i][j],a[i][j+1])计算最大路径和。 动态规划理论:解释了状态、转移方程、有向无环图(DAG)等核心概念,强调最优子结构和无后效性原则。 纸币问题2(P2840):扩展
2025-07-14 18:42:25
848
原创 0-1背包问题(洛谷P1048采药)
摘要: 本文介绍了经典的背包问题在采药场景中的应用。题目要求在给定时间T内,从M种草药中选择若干种采摘,使得总价值最大。输入包含草药的时间和价值,输出最大价值。提供了两种解法:1)二维数组动态规划,时间复杂度O(MT);2)优化的一维数组解法,边输入边处理,空间复杂度O(T)。后者更为高效,适合大规模数据。样例输入70分钟3种草药,输出最大价值3。该问题考察动态规划思想,是NOIP2005普及组真题。
2025-07-11 09:21:46
240
原创 动态规划(洛谷P2842纸币问题)
摘要:这是一个经典的完全背包问题,要求使用无限数量的n种纸币凑出金额w的最小张数。算法使用动态规划,初始化f[0]=0,其他为极大值,状态转移方程为f[i]=min(f[i],f[i-a[j]]+1)。通过两层循环遍历所有可能的面额组合,最终输出f[w]作为结果。时间复杂度为O(nw),适用于n≤10³和w≤10⁴的数据规模。
2025-07-11 09:15:13
186
原创 用Amdahl 定律分析提高绩点的方法
摘要:本文提出一个公式化模型(S=1/[(1-α)+α/k])来指导绩点提升策略。其中,S代表绩点提升倍数,α是可优化课程的时间占比,k是效率提升倍数。提升绩点的三大策略是:1)扩大可优化课程范围(增大α);2)改进可优化课程的学习方法(提高k);3)合理分配难优化课程的精力。通过调整这三个参数,可实现绩点提升效果最大化。例如当α=0.6、k=3时,绩点提升倍数可达1.67倍。该模型为系统化提升绩点提供了量化分析框架。
2025-07-08 09:51:33
698
原创 Numpy随机分布
一、随机与数据分布一、随机与数据分布通过某种生成算法产生的随机数称为伪随机数。我们能生成真正的随机数吗?是可以的。为了在我们的计算机上生成真正的随机数,我们需要从外部来源获取随机数据。这些外部来源通常是我们的按键、鼠标移动、网络数据等等。我们不需要真正的随机数,除非它与安全相关(例如加密密钥)或应用的基础是随机性(例如数字轮盘赌)。本次,我们将使用伪随机数。NumPy 提供了random处理随机数的函数。随机函数的rand()方法返回 0 到 1 之间的随机浮点数。
2025-05-05 11:15:50
775
原创 表单数据校验方法
表单校验帮助我们确保用户以正确格式填写表单数据,确保提交的数据能使我们的应用程序正常工作。本文将告诉你需要了解的有关表单校验的内容。一、什么是表单数据校验这就是——当你向 Web 应用输入数据时,应用会验证你输入的数据是否是正确的。如果验证通过,应用允许提交这些数据到服务器并储存到数据库中(通常情况下),如果验证未通过,则 Web 应用会提示你有错误的数据,并且一般都会明确的告诉你错误发生在哪里。表单校验可以通过许多不同的方式实现。
2025-04-13 16:28:55
1307
原创 蓝桥杯真题C++B组
把结果填空的答案直接通过网页提交即可,不要书写多余的内容。注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。考试期间选手可浏览自己已经提交的答案,被浏览的答案允许拷贝。:要求选手设计的程序对于给定的输入能给出正确的输出结果。选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它 方式提交的答案无效。考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
2025-04-12 16:11:23
185
原创 链表代码实现(C++)
如果有尾部节点的引用,就可以在O(1)的时间复杂度内完成尾部添加元素的操作;如果删除一次单链表的尾节点,那么之前的尾节点的引用就会失效,还需要遍历一次才能找到尾节点?在创建双链表时,创建一个虚拟的头尾结点,无论双链表是否为空,这两个结点都存在,这样就不会出现空指针的问题,避免边界处理的问题。因为在工程应用中,通常在容器尾插入元素,双链表持有尾部节点的引用,就可以在O(1)时间复杂度的情况下在尾部添加元素。之前需要在头部插入元素,需要分类讨论,现在有了虚拟头尾结点,无论是否为空,都不需要分类讨论。
2025-04-12 15:55:04
327
原创 河畔石上数(C++)
可以按以下方式定义和初始化std::set// 定义一个存储整数的 set// 定义并初始化一个 setreturn 0;若需要自定义元素的排序规则,可以在定义std::set时传入自定义的比较函数或者函数对象。// 降序排序return 0;综上所述,std::set是一个功能强大的关联容器,适合用于存储唯一元素并进行高效的查找、插入和删除操作。接下来,看一下这道题。
2025-04-08 17:03:56
341
原创 好数(蓝桥杯2024省赛B组)
一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位。)上的数字是偶数,我们就称之为“好数”。24 以内的好数有 1,3,5,7,9,21,23,一共 7 个。给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。个位为0,十位为1,逐渐增加,这样数位%2为0,就是奇数位。
2025-04-08 09:04:07
262
原创 数组基本操作(C++)
动态数组 数据结构第2篇文章先把数组分为静态数组和动态数静态数组是一块连续的内存空间,可以通过索引来访问这个数组中的元素;而动态数组其实是为了方便,添加了一些函数(如remove、push),不用自己去完成这些复杂操作,除此之外,栈、队列、哈希都依赖动态数组。一、静态数组这里解释一下arr[10] :在内存中开辟了一段连续的内存空间,大小是40(因为int是占4字节)
2025-03-31 09:51:44
839
原创 旋转矩阵的讨论(基于洛谷P4924,魔法少女小Scarlet)
接下来 m 行,每行 4 个整数 x,y,r,z,表示在这次魔法中,Scarlet 会把以第 x 行第 y 列为中心的 2r+1 阶矩阵按照某种时针方向旋转,其中 z=0 表示顺时针,z=1 表示逆时针。首先,Scarlet 会把 1 到 n2 的正整数按照从左往右,从上至下的顺序填入初始的二维数组中,然后她会施放一些简易的魔法。对于100%的数据 1≤n,m≤500,满足 1≤x−r≤x+r≤n,1≤y−r≤y+r≤n。输出 n 行,每行 n 个用空格隔开的数,表示最终所得的矩阵。
2025-03-29 21:44:11
256
原创 链表(C++)
这是本人第二次学习链表,第一次学习链表是在大一上的C语言课上,首次接触,感到有些难;第二次是在大一下学习数据结构时(就是这次),使用C++再次理解链表。同时,这也是开启数据结构学习写的第一篇文章,但愿以后有时间一直写下去。当然,学习数据结构还是保持着学习计算机的基本素养——增、删、查、改。
2025-03-29 19:07:30
1525
原创 合并果子 (贪心、堆、优先队列) 洛谷P1090
接着,将新堆与原先的第三堆合并,又得到新的堆,数目为 1212 ,耗费体力为 1212。假定每个果子重量都为 11 ,并且已知果子的种类 数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。第二次比较a1[1]和a2[0],此时w=5+10;由于a1[0]小,所以w=a1[0]=5。
2025-01-27 10:33:51
393
原创 C语言:指针
指针是C语言中一个强大且重要的概念,它允许你直接访问内存,并且支持动态内存分配和高效的数据操作。正确使用指针可以显著提高代码的性能和灵活性,但需要小心管理,以避免内存泄漏和段错误等问题。如果你对某个特定的指针主题有问题,或者需要进一步的澄清,请随时提问!
2025-01-02 21:30:33
816
原创 结构体(C语言)
结构体的定义使用struct// ... 更多成员// 定义结构体// 学生姓名int age;// 学生年龄// 学生成绩// 创建结构体变量// 给结构体成员赋值// 输出结构体成员return 0;
2025-01-01 18:53:34
681
1
原创 链表、文件(C语言)学习步骤
链表:理解基本的链表操作,自己动手实现常见的操作(如插入、删除、遍历等),并掌握链表的高级用法(如双向链表、循环链表等)。文件操作:掌握文件的打开、读写、关闭等基本操作,学会处理文本和二进制文件,理解文件指针和错误处理机制。
2024-12-23 21:53:32
634
原创 链表综合题2
(1)如果命令是I,功能为创建空链表,对应函数:void List_Init(head);(2)如果命令是A,后跟一个整数data,功能为向链表尾部追加一个数据data,(5)如果命令是N,后跟一个整数n和d,功能为向链表的第n个位置插入数据d,(3)如果命令是C,后跟一个整数N,再跟N个整数,功能为向链表尾部追加N个。(6)如果命令是F,后跟一个整数d,功能为在链表查找数据d,返回其位序,若。(7)如果命令是D,后跟一个整数n,功能为删除链表第n个位置的数据,可通过。对于以下数据结点的结构定义,
2024-12-23 21:45:48
509
原创 链表综合题1
(3)实现一个函数char* BookRoom(Room *head,int price),预定价位为price的房间。(4)实现一个函数Room* delRoom(Room *head,char *roomN),删除roomN表示的客房号,并更新文件room_info.txt中的客房信息。(1)实现一个函数int InitRoomInfo(Room **head,int n),从文件room_info.txt中读入n个客房信息,并采用链式存储,成功则返回读取的记录数,失败返回-1。int price;
2024-12-23 21:43:11
451
原创 编写简单有序链表的创建和查询修改
(1)创建一个单向链表,其结点包含值(number)和序号(xuhao)两个整型数据字段(序号从1开始递增,相邻两结点的序号相差1,下同), 输出该链表(按顺序从头部开始输出结点的值,相邻结点值之间用一个空格隔开,最后一个结点的值后不包含空格,下同);(6)对链表的任何修改操作,都必须保证操作后,链表中从第1个结点开始,序号始终是从1开始递增,相邻结点的序号值相差1.(4)插入结点: 输入整数 n和整数x,在原链表中序号为n的结点后插入值为x的新结点,然后输出该链表;输入第二行:输入要查找的序号3。
2024-12-19 10:58:07
506
原创 链表尾插法
使用 Node** pphead 可以在函数内部修改主函数中的头指针,例如在链表为空时,插入的第一个节点需要修改头指针的值。当链表为空时,直接将新节点赋值给 *pphead,即更新主函数中的头指针。• 为什么使用 Node** pphead 而不是 Node* phead?3. 遍历链表,找到尾节点(tail->next == NULL)。• 如果为空,直接将新节点作为头节点。• 如果不为空,继续以下步骤。4. 将新节点插入到尾节点之后。• 如何处理链表为空的情况?
2024-12-18 14:19:35
331
原创 贪心算法一(同类题)赛马
问题:一天小明与他同学准备赛马,他们每人有n匹马,每匹马有一个固定的战力值,战力值高的马会战胜战力值低的马并赢得比赛。每匹马只能出场比赛一次。小明偷看到了他对手每匹马的出场顺序,小明在更改自己马出场顺序后最多能赢多少场比赛。
2024-11-30 09:43:46
491
原创 贪心算法一 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。虽然你有两块小饼干,由于他们的尺寸都是 1,你只能让胃口值是 1 的孩子满足。,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。你有三个孩子和两块小饼干,3 个孩子的胃口值分别是:1,2,3。你有两个孩子和三块小饼干,2 个孩子的胃口值分别是 1,2。,这是能让孩子们满足胃口的饼干的最小尺寸;你拥有的饼干数量和尺寸都足以让所有孩子满足。,我们可以将这个饼干。所以你应该输出 1。所以你应该输出 2。
2024-11-29 15:55:46
577
原创 最大道路问题
一张地图上有有N个城市,他们可以通过双向道路互相连接,但是每两座城市只能有一条双向道路互相连接。现在我们想要满足条件“地图中不能有任意三个城市可以互相直达”,请问满足这个条件的最大道路数是多少?这样做的目的是确保没有三个城市可以互相直达,因为每部分内部没有连接。• t * (n - t) 表示第一部分的每个城市与第二部分的每个城市之间的连接数。• t 是 n 的一半,即 t = n / 2。• n - t 是第二部分的城市数。• t 是第一部分的城市数。
2024-11-29 13:12:43
203
原创 退圈游戏-C语言
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。:最后一人的初始编号。
2024-11-28 20:35:47
362
原创 排队领水 C语言
排队领水 羊村的供水系统搞砸了,隔壁牛村捐赠的的矿泉水刚刚送达,村长让喜羊羊们排队领水,已知有n个羊村村民正在排队取水,懒羊羊不知道他在队伍的具体哪个位置,但他知道有不少于a个人在他前面,有不多于b个人在他后面,你能帮忙计算一下懒羊羊有多少个可能的位置吗?
2024-11-26 20:03:39
210
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人