- 博客(40)
- 收藏
- 关注
原创 求1000以内所有素数并输出的几种方法
今天咱们来点不一样的,来看一下这样的一道题目,他要求我们把1-1000的素数全部找到并且输出那我们先要了解什么是素数,所谓素数,就是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。而合数则恰巧与素数相反,是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。
2023-03-13 23:48:38 6852
原创 蓝桥题库-3865-Alice和Bob的爱恨情仇
前面有偶数个奇数堆,最后是奇数堆或者前面有奇数个奇数堆,最后是偶数堆(饼干总数均为奇数)前面有偶数个奇数堆,最后是偶数堆或者前面有奇数个奇数堆,最后是奇数堆(饼干总数均为偶数)所以这道题也是一样的,我们可以根据每次题目所给我们的数据来提前锁定最终的答案;一堆饼干有奇数个 先手的先拿完 先手角色反转。所以有多少个奇数堆,先手角色就会反转多少次。奇数个奇数堆 才使得先手角色反转。除去最后一个堆,前面有偶数个奇数堆时。除去最后一个堆,前面有奇数个奇数堆时。最后是奇数 则后手赢。
2024-10-29 18:55:03 168
原创 map基础知识
与 set 和 multiset 的差别一样;是无序的;与 unordered_map 类似,底层是由哈希函数实现的,其元素的插入、删除和查找的平均时间复杂度为O(1),但最坏时间复杂度都为O(n)!;
2024-04-18 21:06:29 524
原创 set基本知识
set 是一个用来存储同类型唯一元素的容器,并按照一定规则进行排序,set 中的元素是默认按照升序进行排列的;class set;Key 表示存储在 set 里面元素的类型;Compare 表示函数比较类型,默认为 less(升序排列),可以改为 greater (降序排列);Allocator 表示函数用于分配器的类型,默认为 allocator ,可以缺省;注意:set 中的元素是唯一的,即不允许重复元素存在,故此向其中插入重复元素时 set 会自动忽略该元素;
2024-04-18 21:05:05 1514 1
原创 queue基础知识
默认情况下,priority_queue() 按照元素从大到小进行排序,即最大的元素在队列最前面,为 top()值;其中T表示 stack 中存放的数据类型;Contaier:表示底层容器的类型,默认参数;Compare:比较函数,默认为less,即按照从大到小的。
2024-04-17 22:03:16 946
原创 stack基础知识
stack 是一种后进先出(LIFO)的数据结构其中T表示 stack 中存放的数据类型;Contaier:表示底层容器的类型,默认参数;
2024-04-17 22:00:23 171
原创 list基础知识
list 是双向链表,是C++的容器模板,其接收两个参数,即 list(a,b) 其中 a 表示指定容器中存储的数据类型,b 表示用于分配器内存的分配器类型,默认为 list ;list 的特点:双向性:由于是双向链表,每个节点都包含前一个节点和后一个节点的指针,故此可以在 O(1) 内实现对某个元素的插入、删除,但对于访问读取来讲就需要 O(n) 的时间;动态大小:类似于 vector ,其大小也会随着需求扩展或收缩,无需提前定义容器的大小;
2024-04-17 21:58:30 934
原创 pair知识点简述
pair 是一个模板类,表示一对值的组合,位于 头文件中;pair 类模板有两个模板参数,T1和T2,分别表示第一个值和第二个值的类型;pair 类有两个成员变量,first 和 second,分别表示第一个值和第二个值;pair 类函数还有一些成员函数和特性,例如默认构造函数、带参数的构造函数、比较运算符重载等;
2024-04-16 15:25:16 590
原创 全排列(函数法)
next_permutation( ) 函数用于判断当前序列是否存在按照字典序变得更大一级的下一个序列;此函数会按照字典序进行重新排列,如果存在下一个序列,则将当前序列更改为下一个序列并返回一个 true 的 bool 变量,反之则会将序列变为第一个(即最小的)序列然后返回 false;根据字典序进行排序,1 2 3下来为1 3 2,在接下来依次是2 1 3,2 3 1,3 1 2,3 2 1;
2024-04-16 15:21:10 356
原创 字母大小写转换
tolower( ) 是将参数变为其对应的小写字母,如果其参数不是 char 类型的数据则不进行操作;这两个函数是用来检测参数(字符)是否为小写字母或者大写字母的,函数返回一个 bool 表示结果;注意:islower( ) 和 upper( ) 两个函数参数应当为 char 型变量,但。注意:“不进行操作指的并非不执行这个语句,而是。toupper( ) 同理;,字符串不可以设置为参数;
2024-04-14 18:11:04 505
原创 最值查找(函数法)
参数有三个,nth_element(a.begin() , a.begin()+n , a.end()) 其中第一个和第三个参数类同 min_element( ) 一样为排序的起点和终点,第二个参地址上的元素将处于正确位置,前面的数都比他小,后面的都比他大;min_element(st,end) 其中 st 表示的是列表中所寻找的范围的起点(可以是地址" (a+1,a+n+1) ",也可以是迭代器" (str.begin,str.end) ”),end 表示的是终点;(min和max一样,以max示例)
2024-04-14 17:15:13 372
原创 二分查找(函数法)
当一个序列中存在多个 target 值时,lower_bound( ) 所得到的是序列中第一个 target 值所在的下标a,upper_bound( ) 所得到的是序列中第一个大于 target 值所在的下标b,故此此序列下标 [a,b) 的所有数据均为 target;
2024-04-14 17:06:47 299
原创 如何用两个数组实现高精度下的阶乘之和
对于这道题目而言,大多数人一定会想到分别用高精度乘法和加法来实现阶乘和求和,这样的话又有些同学会想到要用模块化编程的思路来进行代码的完善——用两个函数来分别实现;然而,对于这道题还有另一种更加简洁方便的做法——用两个数组来进行实现,其中一个数组求解最新的阶乘,而另一个数组用来存放累加求得的和。洛谷 P1009[NOIP1998 普及组] 阶乘之和。以上就是我的AC代码了,希望对大家有帮助。
2023-09-20 10:45:30 122
原创 背包问题之01背包——以洛谷P1048 [NOIP2005 普及组] 采药为例
今天呢,我们来学一下背包问题中最为简单的01背包。大家学了这么长时间的编程,都知道0代表false为假,1代表true为真,故此01背包也就指代的是每种物品有且只有一个,对于每个物品只需要考虑选与不选两种情况的最简单易懂的背包问题。我们接下来就以洛谷的P1048 [NOIP2005 普及组] 采药为例给大家讲解一下01背包问题我们是如何解决的👇。
2023-03-30 03:59:11 599
原创 如何实现对数列取余后对不同类数据进行计数(包括sort和unique函数第三参数的用法)——以P4325 [COCI2006-2007#1] Modulo为例
主要的问题在于没有考虑如果第二位与第三位数字一样或者余数一样的情况,举个例子,如果这十个数是一个1和九个2,那么完成第一轮判断的时候我们的计数器就已经出了大问题了——很明显这里只有两个不同的数字,但是由于我们是在拿着1一直进行判断,后面的九个2每个都被记了一次,再加上一开始的1,此时的num已经成了10了,这是一个不写不知道,一写嘎嘎易错的点,希望大家应以为戒!其实要用sort+unique函数还是很简单的,直接在存储的时候就%42不就好了吗,何必要改变这两个的排序准则和判断相等的标准呢。
2023-03-27 23:44:39 415
原创 高精度算法是如何实现的(高精除低精)
除法和我们的减法类似,都会出现有多个前导零的情况,故此,我们依旧要使用while循环进行多次的判断,直到第一次读到非零的数字才开始输出,当然了,有的人可能会问,按是不是要加上输出的地方的数组下标要小于len_ans-1的条件了,那是当然,因为会有0除以某个非零数的情况!,就是从被除数的最高位开始,用这位去除以除数整体,得到商放在这个最高位的正上方,然后把余数放在最高位的正下方,第二步是将被除数的第二位放在刚刚得到的余数后面组成一个新数,再由这个新数除以输出……的存在,所以我们依旧有一步是要去除前导零。
2023-03-24 01:00:00 190
原创 高精度算法是如何实现的
在计算完之后我们要进行的事情就是对ans数组进行逆序输出,但是我们刚刚对len_ans的定义是加一的,那么就会出现最高位不需要进位,前面有0的情况,这个0我们将其称为前导零,那我们在逆序输出数组的时候就要判断一下是否有前导零的存在,有的话就要跳过那位,从下一位开始输出。我们拿到两个数就会就会像上面这样列出竖式逐个位数进行相加,而我们的高精度加法就是这样实现的,我们将输入的数字逐位地进行输入以存在数组里面,但是由于要进行逐位输入,故此我们需要以字符型的数据类型进行储存,稍后将其转化为对应的数字就可以了。
2023-03-22 22:44:28 149
原创 洛谷 P5715 【深基3.例8】三位数排序
今天继续学习排序的算法,这道题目是非常简单的,甚至不需要我们使用循环就可以完成!这么简单的题目就拿来水博客了(还是要好好讲解一下的)
2023-03-20 21:50:42 251
原创 洛谷 P3954 [NOIP2017 普及组] 成绩
今天的第三道题,也是洛谷题单广场里面的 P3954,这道题目我们直接按照题目要求实现对应的计算式就可以了,题目如下👇。
2023-03-20 21:25:45 584
原创 洛谷 P1421 小玉买文具
接下来我们来看一下今天的第二道题目——洛谷题单广场里面的倒数第二题 P1421,这道题目和刚刚那道 P1425有着异曲同工之妙,它同样也需要我们对输进来的数据进行转化,这样才能方便我们的计算,话不多说上题目👇。
2023-03-20 21:05:35 480
原创 洛谷 P1425 小鱼的游泳时间
今天的第一道题目是洛谷题单广场里面的 P1425,在做完【深基2.例12】上学迟到这道题目之后,这道题目就显得非常简单了。
2023-03-20 20:52:07 289
原创 洛谷 B2029 大象喝水
今天咱们继续来顺着洛谷题单广场里面的的第12题 B2029,这道题目会介绍下等价于if-else函数的三目运算符,话不多说上题目👇。
2023-03-19 22:18:37 1221 2
原创 如何实现对数组的去重
unique函数属于STL中比较常用函数,它的功能是元素去重。即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了。由于它”删除”的是相邻的重复元素,所以在使用unique函数之前,一般都会将目标序列进行排序。大家看了以上的解释,一定对这个函数的用途有了一些了解,那么这个函数到底是如何使用的?
2023-03-18 19:54:40 171
原创 洛谷 P2676 [USACO07DEC]Bookshelf B
排序的方法有很多种,其中比较常用的有冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、计数排序、堆排序、桶排序、基数排序这几种(还有其他常用的也欢迎大家来补充啦),就像上一道题目车厢重组使用的其实就是冒泡排序的方法。
2023-03-16 22:10:18 493
原创 洛谷 P1116 车厢重组
今天开始咱们来看一下洛谷的排序题单,通过排序的题目学习排序的方法和思想,并且为以后能更好的解决问题提供足够强的能力。那么我们来看根据难度降序排列的题单里面的第一道题目 P1116,首先我们来看一下题目👇。
2023-03-16 20:15:09 460
原创 洛谷 P5707 【深基2.例12】上学迟到
今天我们继续看洛谷里面的,这道题相对还是比较难的,我们话不多说,来看看这道题目👇首先背景是小明上学的问题,已知最迟8:00到达学校,而输入的数据是小明家到学校的距离和他上学的行进速度,只要记得再空出十分钟的固定的垃圾分类的时间就OK了。那其实我们可以把24小时制的时间转化成过00:00的分钟数,在输出前对60取余,如果小时数或者分钟数为个位数在数字前面补“0”就可以了。
2023-03-16 17:49:53 1325 7
原创 数学表达式中sinx泰勒近似的实现
今天咱们来看这样的一道题目,他是以某个数学表达式为背景,并且给了sinx的泰勒展开式让我们对sinx进行近似并且用这个值来计算上面的数学表达式,最后输出这个表达式的值。
2023-03-15 23:10:57 573
原创 洛谷 P5708 【深基2.习2】三角形面积
今天咱们继续顺着洛谷题单广场里面的继续往下看,轮到了这道题,这道题虽然写的也是深基,但是唯一有难度的地方只在于他需要我们使用sqrt()这个开方的函数,并且加入对应的头文件就OK了。👇。
2023-03-15 21:51:10 841
原创 P5704 【深基2.例6】字母转换
下面一道题目是里面的(没错,我刚刚知道能直接把这个带连接的名字CTRL+C搞过来),接下来上咱们的 P5704 【深基2.例6】字母转换,题目如下👇。
2023-03-09 20:27:11 155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人