自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 C++ sort()排序函数

arr为数组,arr_length为数组长度,cmp为使用者定义的比较方法(返回值为bool的函数)C++中sort()函数可以对传入的数组进行排序,由使用者决定排序方式,此时使用该cmp函数对int类型数组进行排序,可以得到降序排序的数组。在对常用的数据类型进行排序时,可以不添加cmp参数,默认升序排序。C++中使用sort()函数需要引用<alogrithm>头文件。sort(数组,数组+数组长度);sort函数无法直接对struct(结构体)进行排序,此时cmp函数则为必须的参数。

2024-02-04 12:44:16 711 1

原创 洛谷P1093 [NOIP2007 普及组] 奖学金

先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。值得一提的是,在写完后查看题解发现各位大佬使用的是结构体加上sort,相比于我写的堆排序,这样写起来确实会更简洁和简单一些,不过当时写的时候不知道sort可以对结构体排序,因此使用了堆排序,不过大致思路并无太大差别,若使用sort,仅需将比较条件置于cmp函数即可。共5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。

2024-02-03 13:19:07 909 1

原创 洛谷P1059 [NOIP2006 普及组] 明明的随机数

C++中使用set类需要引用<set>库。s.insert(data) //data为datatype相同类型的数据,insert插入在尾部//创建迭代器//遍历输出it!= s.end();//获取s中数据的量。

2024-02-02 15:39:29 407

原创 洛谷P1923 【深基9.例4】求第k小的数

对于这一情况,我们能够做的就是优化代码,由于快速排序是对所选定的轴值的两侧分别排序,我们可以通过判定语句,仅对包含位置为k的一侧进行排序,这样我们可以减少一半的运行时间。由于n的数量级不小,我们直接使用long类型存储,同样,a也使用long类型,而关于分治算法,我在此处使用的是快速排序。我们首先解读一下题目的要求,即第一行输入两个数n和k,第二行输入n个数,输出n个数中第k大的数。然而,仅优化快速排序的算法还是没有办法通过这道题,甚至通过的测试点仍然没有变多,依旧超时了。),输出这些数字的第k小的数。

2024-02-01 00:07:50 744 1

原创 洛谷P1271 【深基9.例1】选举学生会

学校正在选举学生会成员,有n(n≤999)名候选人,每名候选人编号分别从1到n,现在收集到了m(m≤2000000)张选票,每张选票都写了一个候选人编号。这是一道简单的排序题,值得注意的是由于选票的数量最多达到2000000张,导致使用起泡排序等耗时较长的排序方法会让有些测试点TL(没错,正是在下),建议直接使用快速排序等时间复杂度低的方法进行排序。我真傻,真的,忘记去用C++的库自带的sort函数,傻傻的手搓快速排序...我上了,sort秒了,没得说。

2024-01-31 12:13:42 421

原创 洛谷P1045 [NOIP2003 普及组] 麦森数

在C++的运算中,我们可以使用log10(2)获取以10为底2的对数,使用long类型直接取整后+1,就可以得到位数。对于求一个十进制数的位数,其每一位对应的都是10的一个指数级别,所以我们可以用底数为10的对数运算求取其值,即。需注意的是,只需求前500位的值即可,后面一起求的话容易超时。的位数没有任何影响,因为2的指数运算中,末位数不可能为0。在一开始,我直接使用了高精度乘法,每一次都只乘上2,最后成功地收获了50分...这道题的求解可以分成两步,第一步为求解位数,第二步为求解输出的值。

2024-01-30 12:34:36 1220

原创 洛谷P1249 最大乘积

一个正整数一般可以分为几个互不相同的自然数的和,如 3=1+2,3=1+2,4=1+3,4=1+3,5=1+4=2+3,6=1+5=2+4。现在你的任务是将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。

2024-01-29 13:34:05 1380

原创 洛谷P1591 阶乘数码

第一行为t(t≤10),表示数据组数。接下来t 行,每行一个正整数n(n≤1000) 和数码a。对于每组数据,输出一个整数,表示 n!中 a 出现的次数。//对最后一位做最后的处理。int t = 0;//清空number数组。= 5040,0出现2次)= 120,2出现一次)中某个数码出现的次数。//输入每个数组的值。

2024-01-28 21:33:09 1189

空空如也

空空如也

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

TA关注的人

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