- 博客(11)
- 问答 (1)
- 收藏
- 关注
原创 洛谷P1090合并果子
假如我们从简单出发,那么题目实际上就是贪心,选择最小的值添加到实际的花费中,但实际上题目是讲选择最小的两个值组成一个新的堆,计算消费并且将新的堆带入运算,这么讲的话结果部分是影响过程部分,(有点类似于dp,但是我没用),涉及到堆,数据结构中有一课程涉及到堆排序,每次选择最小的两个堆,构造成新的堆。那么本题思路便打开了,只需要每次选择两个最小的堆合成新的堆,计算消费即可。当时读到这个题目的时候我以为这类题目应该是简单地排序,联想到最近写的qt,想着一个sort解决,后面又想了想,”有点不对啊?
2025-02-18 11:23:50
206
原创 计算机中常用的排序方法
插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。前面所介绍的几种排序方法都是基于比较-移动的排序方法,由上面的经验可以知道,只要是采用比较-移动的排序方法,最低的时间复杂度也是n*log(n) ,那么有没有一种时间复杂度为O(n)的排序方法呢?希尔排序是一种不稳定排序,因此要分析它的比较次数是比较困难的,比较次数会取决于它的排序序列,但大部分情况下希尔排序都是要优先于直接插入排序和折半插入排序,因此希尔排序也是插入排序的重点。
2025-01-09 21:14:08
939
1
原创 c++::vector容器在处理最后一个元素时不会出现溢出的情况
但是在用stl容器的时候我发现,对于在vector容器上假如使用vector元素后面的一个元素,编译器不会产生报错,只是一个随机值,这是因为stl容器对于空间采用的是动态分配存储空间,因此程序会有一个初始化的过程,而这个过程是预设好vector需要花费的最大空间;而对于两端值,实际上vector是完成了v.end的初始化,因此对于末端值可以输出,但是是随机值,因为没有被赋值。显然这是一个错误程序,编译器会产生一个错误值。
2024-12-22 23:00:05
227
原创 1057 传球游戏
漂亮,我白干oxt,ok开始分析,既然思路没问题,那就只能是内存或者是时间的问题“对于内存问题,小os昨天晚上打模拟赛的时候脑抽了,开个数组没到要求以为是思路问题,全部重推,花了个吧小时,眼睛都红了才看到,现在一想绝对脑抽”,题目是30,假如采用队列的话按照一个值产生两个方向的情况最后花费的空间是2(30)次方,绝对超额,所以改用别的方法,这时候注意到这题走dp方向更合理;【数据结构】队列(顺序队列、循环队列、链队列)-CSDN博客。看起来差不多,当时我是这么认为的;关于队列,请看这篇文章。
2024-11-10 18:11:38
394
原创 洛谷P1016旅行家 的预算
既然题目要求就是求出最小的花销,那么假如考虑贪心的话,就需要确定一个范围,一个属于贪心的范围,因此我采用先求出假如当前油箱是满的,则车能走的距离,在能走到距离当中,假如有加油站的油价比当前低,则退出循环,计算从当前站点到比自己油价低站点的花销,也就相当于现实生活中,先估计自己能走多远,在能走的距离中确定好加油站,再在最便宜的加油站的加油”此时可以不考虑油箱中剩余多少油“,因为我们计算的花销就是从当前油站到比自己便宜的油站的花费的油。第一行,$D_1$,$C$,$D_2$,$P$,$N$。
2024-11-02 20:43:33
393
原创 洛谷P1022 计算机的改良
这里我补充一下,我没想到最后有一个案例我一直过不了,原因是出现了一个-0的神奇写法,说实话没有学计组的时候我真的不是很懂为什么会出现-0的情况.-0就是出现在浮点型的特殊表达方式,因此计算的时候一定需要主要这个变化,对于-0,直接取0就好也就是最后这个对af的判断。方程中并没有括号,也没有除号,方程中的字母表示未知数。再者,题目当中的案例给的是一个两端都出现未知数的情况,因此我考虑从中间打开两个方程,只需要将前半截和后半截分别计算,得到的结果按照未知数部分和已知数部分区分好,最后在计算一次就好了。
2024-11-01 12:00:07
269
原创 P1036 选数
emmm,我怀疑了半天还是没有找到新的办法,所以只能走通解,用递归遍历整个数组,然后再一次次判断,但是假如一次次判断的话开辟内存的时间也很麻烦,所以采用check函数来快速判断是否为素数;最开始,我设计的是如何考虑他是素数的情况,假如他三个数都为素数,那么得出的结果也坑定一个素数,结果也不出我所料,这是一个坑。题目要求是通过输入程序,在输入的n个数里面选择出m个数求和,统计和为素数的情况。
2024-10-03 19:09:24
248
原创 洛谷1025:数的划分
题目描述简单明了,既然不能有重复的数字,那么采用递归写个人认为是最简单的,因为每一个结果都是按照递增,那么只需要先把某一面的方向遍历一次,然后将下一面的值再走一次递归就好了;但是必须要考虑一个问题,递归消耗的时间较大,所以必要的地方需要剪枝,不然会超过时间。
2024-10-03 15:21:17
344
原创 乒乓球1040
在 $11$ 分制下,此时比赛的结果是华华第一局 $11$ 比 $0$ 获胜,第二局 $11$ 比 $0$ 获胜,正在进行第三局,当前比分 $1$ 比 $1$。而在 $21$ 分制下,此时比赛结果是华华第一局 $21$ 比 $0$ 获胜,正在进行第二局,比分 $2$ 比 $1$。每个输入文件包含若干行字符串,字符串有大写的 $\texttt W$ 、 $\texttt L$ 和 $\texttt E$ 组成。你的程序就是要对于一系列比赛信息的输入($\texttt{WL}$ 形式),输出正确的结果。
2024-07-28 16:48:25
659
原创 洛谷1015回文数(c++)
这个题目是高精度题目,所以很自然的选择字符串来写,但是模拟我感觉我没怎么用到,可能有其他算法吧,我采用的是分治,代码量有点大,如果有比较好的写法,还请多多指正。
2024-05-10 13:30:48
324
MySQL学生成绩管理系统
2025-01-15
基于javaswing的可视化学生信息管理系统
2024-12-21
scanf引用第二个值跳转后第三个哪来的
2022-02-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人