- 博客(52)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++中的优先队列(priority_queue)
*优先队列(priority queue)**普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有优先级最高先出的性质。通常采用堆数据结构来实现。尖括号里写数据类型,容器名称和排列规则数据类型可以是intchardoublestring等等容器名称一般使用vector动态数组排列规则一般是大根堆或者小根堆,表示最大或最小的优先级别最高。
2022-10-08 21:27:43
2620
11
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++中的可变长数组(vector)
定义格式为其中的type_name可以是数据类型,像int,double,char,string或者是vector本身这样的//定义了一个整型不定长数组a vector < double > a;//定义了一个双精度浮点型不定长数组score vector < node > a;//定义了一个结构体类型的不定长数组stu。
2022-10-07 22:06:37
5490
11
原创 Python基础之输入输出
Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。
2022-10-28 12:55:39
11414
9
原创 C++中的双端队列(deque)
双端队列中,使用双向链表,所以可以声明一个内部类DLNode表示链表中的每一个节点,因为节点中有数据,前一个节点的引用和后一个节点的引用,所以它有三个属性data, next 和previous, 又因为双端队列中要知道链表中头尾两个节点的引用,所以还要声明两个属性firstNode, lastNode.双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。,因为在双向链表中,链表中每一个节点,都能指向它的前一个节点和后一个节点,只操作一个节点,就能进行插入和删除操作。实现双端队列最好使用。
2022-10-27 09:30:00
1218
原创 NOI / 2.4基本算法之分治-2991:2011
只需要每乘一次2011,就与10000求一次余,这样就不会爆空间了;第三个问题,需要找规律,我们发现2011每500的方的末四位结果一样,所以只需要与。第一行为一个正整数k,代表有k组数据,k
2022-10-26 17:41:42
721
1
原创 P7910 [CSP-J 2021]-插入排序
首先我们要定义一个结构体数组,有两个元素,分别是需要存储的量和它的序号,用来存储在排序前他们分别占的位置,必须定义!数组的长度应是8000,因为n的值最大是8000,我们多开五个空间。//数组里的值原和序号 } a [ 8005 ];还需要定义一个b数组,用来存放他们排序后的序号,b应是一个一维数组。
2022-10-25 11:11:30
351
1
原创 P7913 [CSP-S 2021] 廊桥分配
当一架飞机抵达机场时,可以停靠在航站楼旁的廊桥,也可以停靠在位于机场边缘的远机位。乘客一般更期待停靠在廊桥,因为这样省去了坐摆渡车前往航站楼的周折。然而,因为廊桥的数量有限,所以这样的愿望不总是能实现。机场分为国内区和国际区,国内航班飞机只能停靠在国内区,国际航班飞机只能停靠在国际区。一部分廊桥属于国内区,其余的廊桥属于国际区。L 市新建了一座机场,一共有n个廊桥。
2022-10-13 20:07:11
302
原创 P7076 [CSP-S2020] 动物园
动物园里饲养了很多动物,饲养员小 A 会根据饲养动物的情况,按照《饲养指南》购买不同种类的饲料,并将购买清单发给采购员小 B。具体而言,动物世界里存在2k种不同的动物,它们被编号为0∼2k−1。动物园里饲养了其中的n种,其中第i种动物的编号为ai。《饲养指南》中共有m条要求,第j条要求形如“如果动物园中饲养着某种动物,满足其编号的二进制表示的第pj位为1,则必须购买第qj种饲料”。其中饲料共有c种,它们从1∼c编号。
2022-10-08 09:00:00
672
1
原创 详解十六进制
十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15.十六进制数的技术规则是“逢十六进一”,通常,对十六进制数的表示,可以在数字的右下角标注16或H,但在C语言中是在数的前面加数字0和字母X即0X来表示。16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…从小数点开始,分别向左、右按4位分组转换成对应的十六进制数字字符,最后不满4位的,则需补0。计数到F后,再增加1个,就进位。
2022-09-08 16:15:44
10208
2
原创 讲解C++中的深度优先搜索(DFS)
所以,将目前未放置的数中除了n-1之外的最小数n放入第n-1个盒子里面,再往下走,走到了第n个盒子,手里剩下了一个数字n-1,自然放入第n个了。继续回溯:当前在第n个盒子,回溯走到了第n-1个盒子(并取出了第n个盒子里的数字n-1),我们发现这两数字都在第n-1盒子放过,那就只能再回溯了(顺便拿起第n-1个盒子的数字n),走到了第n-2个盒子上,取出这个盒子的数n-2。当前,我们的状态时,在第n-2盒子上,手里有数字,n-2,n-1,n;1,2,3,···,n-1,n 和 1,2,3,···,n,n-1。.
2022-08-29 16:51:19
3392
5
原创 P7071 [CSP-J2020] 优秀的拆分
一般来说,一个正整数可以拆分成若干个正整数的和。例如,1=1,10=1+2+3+4等。对于正整数n的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,n被分解为了若干个不同的2的正整数次幂。注意,一个数xx能被表示成2的正整数次幂,当且仅当x能通过正整数个2相乘在一起得到。例如,10=8+2 是一个优秀的拆分。但是,7=4+2+1=2^2+2^1+2^0就不是一个优秀的拆分,因为11不是2的正整数次幂。现在,给定正整数n,你需要判断这个数的所有拆分中,是......
2022-08-27 21:10:53
212
3
原创 P7072 [CSP-J2020] 直播获奖(详解)
NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为w\%w%,即当前排名前w\%w%的选手的最低成绩就是即时的分数线。更具体地,若当前已评出了pp个选手的成绩,则当前计划获奖人数为\max(1, \lfloor p * w \%\rfloor)max(1,⌊p∗w%⌋),其中ww是获奖百分比,\lfloor x \rfloor⌊x⌋表示对xx向下取整,\max(x,y)max(x,y)表示xx和yy中较............
2022-08-26 21:47:37
3729
3
原创 取近似值的函数(向上,向下,四舍五入)C++
该值等于离该值最近的某个整数(看十分位,如果小于等于4,小数部分舍去;大于等于5,则将整数部分加一,小数部分舍去;
2022-08-26 18:33:18
1529
原创 异或(xor)的讲解和使用方法
小A:这个系统当你按下紧急按钮或者房间有大量烟雾发生的时候,警报就会响起小B:这个"或者"是排他性吗?小A:什么意思?小B:就是当你按下紧急按钮并且房间有大量烟雾发生的时候,警报会响起吗?小A:当然会啦!小A:现在C博士应该在北京或者上海开讲座。小B:这个"或者"是排他性吗?小A:你在说什么?小B :就是C 博士可能在北京 又在 上海吗?小A:当然不会啦!...
2022-08-26 15:01:46
1876
4
原创 C/C++-学习笔记(下)
namespace yemaoxu//名字空间标识符{//在自定义的命名空间中定义自己的变量或函数或类。int a=10;//...}所有的名字空间就是在全局空间中定义的,相当于是在全局空间中又自定义一个不同名字的全局作用域。......
2022-08-26 10:47:54
188
2
原创 P7911 [CSP-J 2021] 网络连接(详细讲解)
在本问题中,我们假定凡是符合上述规范的地址串均可参与正常的连接,你无需考虑每个地址串的实际意义。由于网络阻塞等原因,不允许两台服务机使用相同的地址串,如果此类现象发生,后一台尝试建立连接的服务机将会无法成功建立连接;除此之外,凡是提供符合规范的地址串的服务机均可成功建立连接。如果某台提供符合规范的地址的客户机在尝试加入连接时,与先前某台已经成功建立连接的服务机提供的地址串相同,这台客户机就可以成功加入连接,并称其连接到这台服务机;如果找不到这样的服务机,则认为这台客户机无法成功加入连接。......
2022-08-25 21:20:06
910
1
原创 C++折半查找具体介绍及用法
折半查找也称二分查找,是一种在有序数组中查找某一特定元素的搜索算法,每一次查找,搜索范围均缩小一半,效率较高。如果数组是乱序状态,则应排序,再进行查找。
2022-08-25 16:06:47
4102
4
原创 NOI / 2.2基本算法之递归和自调用函数-1696:波兰表达式(详细讲解)
波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的波兰表示法为+ 2 3。波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的波兰表示法为* + 2 3 4。所以我们在应该在一开始递归时,先输入一个字符串,如果是符号,就进行两次递归,并对其进行加减乘除的操作;如果是常量,就用atof()把字符串转换成一个小数类型的数,并返回。如果有不懂的的问题,可以留在评论区里,我会尽快回复的(✪ω✪)输出为一行,表达式的值。
2022-08-25 13:35:56
766
9
原创 NOI / 2.2基本算法之递归和自调用函数-6261:汉诺塔问题(详细讲解)
把A柱子上的圆盘借B柱子全部移动到C柱子上,并且移动的过程始终是小的圆盘在上,大的在下。约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。我们先来回顾一下递归的条件,一个是终止条件,一个是调用自己。我们先来看下递归的终止条件就是当n等于1的时候,也就是A柱子上只有一个圆盘的时候,我们直接把A柱子上的圆盘移动到C柱子上即可。
2022-08-24 16:02:48
321
1
原创 C/C++中递归的定义和调用(如何使用递归)
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”
2022-08-24 15:53:26
2122
2
原创 P7910 [CSP-J 2021]-插入排序
首先我们要定义一个结构体数组,有两个元素,分别是需要存储的量和它的序号,用来存储在排序前他们分别占的位置,必须定义!数组的长度应是8000,因为n的值最大是8000,我们多开五个空间。{//数组里的值原和序号}a[8005];还需要定义一个b数组,用来存放他们排序后的序号,b应是一个一维数组。
2022-08-23 14:59:19
1343
7
原创 C/C++入门语句和常用的基本函数
上面的两个scanf()都是从键盘给a,b两个整型变量取值。除了C语言内置的函数外,我们也可以自己定义函数和它内部的功能,后面也会系统讲述。C语言中有三种循环结构:①for语句②while语句③do-while语句。①break语句②goto语句③continue语句⑤return语句。如果有不懂的的问题,可以留在评论区里,我会尽快回复的(✪ω✪)绝对值函数fabs(x):计算x的绝对值(写成abs也可以)scanf()函数有一个很刁钻的问题,看下面代码。
2022-08-23 10:39:27
320
2
原创 C/C++-学习笔记(上)
C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口。而main前面的int就是主函数的类型.printf()是格式输出函数,这里就记住它的功能就是在屏幕上输出指定的信息return是函数的返回值,根据函数类型的不同,返回的值也是不同的。\n是转义字符中的换行符。(注意:C程序一定是从主函数开始执行的)...
2022-08-22 13:44:41
403
16
原创 P7909 [CSP-J 2021] 分糖果(详细讲解)
不难发现,如果l与n的余数和r与n的余数相同(在同一个周期范围,同学们平均分拿到的糖果一样),搬糖果的奖励的糖果数量就是最大数与人数的余数,那如果范围比较大,选择范围就多了,搬糖果的奖励的糖果数量就会达到最大值:n-1,因为只要找到余数最多的情况就行了。
2022-08-20 21:44:19
1277
原创 C++/C基础知识-数组(详解)
数组是一组相同类型元素的集合:数组创建数组简介一、一维数组的创建和初始化1.数组的创建2.数组的初始化3.一维数组的使用4.一维数组在内存中的存储二、二维数组的创建和初始化1.二维数组的创建2.二维数组的创建3.二维数组的创建4.二维数组在内存中的存储三、数组越界数组名是什么?一位数组一维数组的创建和初始化数组的创建数组的初始化一维数组的使用一维数组在内存中的存储二维数组 变长数组变长
2022-08-20 11:39:11
1780
14
原创 NOI / 2.5基本算法之搜索-1818:红与黑
想法:从起点开始进行深搜,上下左右四个方向进行深搜,每搜到一个地方累加的变量的值就加1,然后再从新结点进行一次深搜,直到深搜递归正常返回之后,黑砖的数量也就算出来了,主函数只需要在输出就行了。首先需要两个增量数组,分别表示新结点与原来的结点之间的关系,一个是x坐标,一个是y坐标,上下左右顺序无所谓,但需要配对。我们还需要一个状态数组,用来标记每个结点是否走过,不能重复走,每标记一个黑砖,状态则标记为走过。对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。...
2022-08-18 21:42:55
178
原创 NOI / 2.5基本算法之搜索-6266:取石子游戏
运用"辗转相减法",完美模拟取石子过程,因为每次剩下的石子数多的那一堆如果大于少的那一堆的两倍或是他的整数倍,则此时正要取的人获胜,1代表先手胜,0代表后手胜。根据提示和找规律,我们发现:假设石子数目为(a,b)且a >= b,如果[a/b] >= 2则先手必胜,如果a%b==0则先手必胜。假设石子数目为(a,b)且a >= b,如果[a/b] >= 2则先手必胜,如果[a/b]...
2022-08-18 21:06:57
249
原创 盘点C++中那些好用的函数
使用,枚举出数组的所有排列,并将其值赋给数组,且有返回值,若有下一个排列,返回真,否则返回假,一般与do while搭配使用。作用:可以交换两个整数,两个小数,两个字符,两个数组,两个字符串,甚至两个。如果你觉得以上内容对你有帮助的话,欢迎给我点个一圈三连噢(✪ω✪)先写底数,再写指数,结果为浮点数,因为底数可以是小数。,括号里写你要交换的东西(类型必须相同)。3.sort(a,a+n)//快速排列函数。括号里填要计算平方根的数,结果为小数。...
2022-08-18 11:00:13
635
原创 中国电子学会五级考点详解string类型字符串
string是c++中的一种字符串类型,它比char在大多数方面更好用、更快捷、更简单。return 0;}string是用来储存字符串的类型,不同于char。char变量只能存字符,chan数组才可以存字符串,但string设计出来就是专门用来存字符串的。string类型变量的每一个变量,就可以存一个字符串,变量空间(长度)由里面存的字符决定,无需自己定义。另外,还有string类型的数组,可以存储多个字符串。...
2022-08-18 10:44:53
198
1
原创 NOI / 2.5基本算法之搜索8465:马走日(详细讲解)
马在中国象棋以日字形规则移动。请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。第一行为整数T(T < 10),表示测试数据组数。每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。15 4 0 0。...
2022-08-17 10:52:49
652
3
原创 讲解C++中的sort(快速排序函数)(非常好用)
C++中有一门算法叫做排序,方法也是千方百计,比如冒泡排序法,选择排序法,快速排序等等。但冒泡排序法和选择排序法都有个缺点:速度太慢,当你在考试的时候,最烦的就是超时了。冒泡排序法和选择排序法的时间复杂度是n²,而快速排序法的时间复杂度只有n*log2(n)。log是什么意思呢,指的是a的b次方是n,a的值较常见的是2和10,因为2进制和10进制较常见,而在C++中,log的底数为2,真数是n,也就是2的多少次方是n,比如n是16,对数就应是4。所以快速排序法就快了许多。...
2022-08-04 17:58:10
1544
3
原创 NOI / 2.5基本算法之搜索1792:迷宫(详细讲解)
一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。...
2022-08-04 12:50:28
852
原创 NOI / 2.4基本算法之分治7909:统计数字(详细讲解)
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。包含n+1行:第一行是整数n,表示自然数的个数;第2~n+1每行一个自然数。40%的数据满足:1...
2022-08-03 19:27:33
1475
2
原创 NOI / 2.5基本算法之搜索1789:算24(详细讲解)
给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能得到24。...
2022-08-02 19:42:23
493
原创 NOI / 4.6算法之贪心19:装箱问题(详细讲解)
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1,2*2,3*3,4*4,5*5,6*6。这些产品通常使用一个6*6*h的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。输入文件包括几行,每一行代表一个订单。21。...
2022-08-02 16:56:22
560
原创 NOI / 4.6算法之贪心2469:电池的寿命(详细讲解)
小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电。为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同,有的能使用5个小时,有的可能就只能使用3个小时。显然如果他只有两个电池一个能用5小时一个能用3小时,那么他只能玩3个小时的游戏,有一个电池剩下的电量无法使用,但是如果他有更多的电池,就可以更加充分地利用它们,比如他有三个电池分别能用3、3、5小时,他可以先使用两节能用3个小时的电池,使用半个小时后再把其中一个换成能使用5个小时的电池,两个半小时后再
2022-07-31 17:17:59
1205
1
原创 NOI / 4.6算法之贪心1797:金银岛(详细讲解)
structnode//结构体放金属的数据{intn,v;//重量和总价值doublem;//m表示单价}a[102];最多100种金属。
2022-07-31 16:57:40
453
原创 NOI / 4.6算法之贪心2704:寻找平面上的极大点(详细讲解)
在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b;用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。本题规定:n不超过100,并且不考虑点的坐标为负数的情况。.........
2022-07-29 20:00:31
517
空空如也
C++中弹出MessageBox后如何判断点击的是什么
2022-08-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人