自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 素数筛法(埃氏筛,线性筛)

埃拉托斯特尼筛法(Eratosthenes)时间复杂度O(nloglogn)void Prime(int b) //prime[i]==1则是合数{ prime[1]=0; for (int i=2; i<=b; i++) { if (prime[i]) continue; for (int j=i*2; j<=b; j+=i) prime[j]=1;//将i的倍数标记为合数 } }原理很简单,所有合

2021-03-09 09:04:59 213

原创 优先队列(堆)(priority_queue)简介(含自定义比较)

头文件基本操作构造函数priority_queue<Type, Container, Functional> nameType 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式。最简版本——priority_queue<Type> 队列名;//升序队列,小根堆priority_queue <int

2021-03-03 23:46:04 593 1

原创 STL可变数组vector详解

头文件#include<vector>特性简述动态数组(简洁易懂,包括了数组的各种特性,同时长度可变)基本操作构造函数vector<元素类型>v(N,i)建立一个可变长度数组v,最开始有N个元素,且这N个元素初始化值为i;可以省略i(默认为0),也可以省略后面括号及其内容,此时数组长度就为0(也可以打空括号实现)。vector<复制来的元素类型>(begin,end)复制[begin,end)区间内另一个数组的元素到vector中。(注意复制的是n个元素

2021-02-22 23:39:34 331

转载 读入优化与输出优化(模板)

读入优化正负整型读入优化#include<cctype>inline int read(){ int X=0,w=0; char ch=0; while(!isdigit(ch)) {w|=ch=='-';ch=getchar();} while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X;}正负实数读入优化#include<ccty

2021-02-16 12:37:29 128

原创 位运算符及常用位运算技巧

位运算符用来对二进制位进行操作。位运算符中,除 ~ 以外,其余均为二元运算符。操作数只能为整型和字符型数据。C语言中六种位运算符:& 按位与| 按位或^ 按位异或~取反<<左移>>右移按位与运算符"&"只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。(正数补码就是原码,负数在对应正数的原码上取反+1)按位或运算符“|”只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。按位异或运算

2021-02-16 12:27:36 1280

原创 全排列函数next_permutation与prev_permutation

组合数学中经常用到排列,这里介绍一个计算序列全排列的函数:next_permutation(start,end),和prev_permutation(start,end)。头文件< algorithm >作用这两个函数作用是一样的,区别就在于前者求的是当前排列的下一个排列,后一个求的是当前排列的上一个排列。至于这里的“前一个”和“后一个”,我们可以把它理解为序列的字典序的前后,严格来讲,就是对于当前序列pn,他的下一个序列pn+1满足:不存在另外的序列pm,使pn<pm<p

2021-02-11 21:16:58 157 2

原创 洛谷P1618 三连击(升级版)(两种实现)

题目描述将 1,2,…,9 共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!。输入格式三个数,A,B,C。输出格式若干行,每行3个数字。按照每行第一个数字升序排列。方法一分析首先想到是暴力枚举。但这里需要注意一点,A,B,C不一定是最简比例。比如A:B:C=219:438:657,如果直接从A,B,C初始值开始枚举倍数就无法得知之前的情况了(比如192,384,576也是一组)。所以用gcd来求ABC最简

2021-02-11 17:45:14 504 2

原创 快速排序(Quick Sort)

简述快速排序算法最早由图灵奖获得者Tony Hoare设计,他在形式化方法理论以及ALGOL60编程语言的发明中都有卓越的贡献,是上世纪最伟大的计算机科学家之一。而接下来的快速排序算法,被列为20世纪十大算法之一。快速排序与我们认为比较慢的冒泡排序一样都是交换类排序,只不过它的实现,增大了记录的比较与移动的距离,不是相邻比较交换的冒泡形式。基本思想通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。

2021-02-10 11:45:59 240

原创 exit详解(exit,_exit,exit(x))

百科解释函数名: exit()头文件:<stdlib.h> (如果是”VC6.0“的话头文件为:<windows.h>)功能: 关闭所有文件,终止正在执行的进程。exit(0)表示正常退出,exit(x)(x不为0)都表示异常退出,这个x是返回给操作系统(包括UNIX,Linux,和MS DOS)的,以供其他程序使用。stdlib.h: void exit(int status); //参数status,程序退出的返回值部分理解exit(0):正常运行程序并退出程序;

2021-02-03 22:40:49 1952

原创 基数排序 Radixsort(动图,详解)

原理描述给定一串无序数,按照最低(有效)位优先进行桶式排序。即从个位开始进行第一趟排序,个位为0的进入0号桶,为1的进入1号桶…直至全部数据进入分别的桶内。(注意多个数据在同一个桶内有顺序哦,原数据的先后顺序怎样在入桶出桶也遵从先入先出的原则)每个桶相当于一个队列,所有数入各自桶以后再按从左到右,从下到上(先入先出)出桶排列成一行,再依此行按照十位进行第二趟排序。由此反复,最大的数有几位就进行几次,可用while实现。示意图代码#include<iostream>#inclu

2021-02-01 13:03:52 627 2

转载 数据结构超详细基础介绍!(后续会原创各结构详解)

数据结构 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。 数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的基本单...

2021-01-24 23:04:45 678

原创 关于链表初始化typedef struct LNode{}LNode,*linklist的理解

在严的数据结构(c语言版) 中看到一段伪代码:typedef struct Node{ ElemType data;//ElemType是本书约定的统一数据元素类型,简单理解成int吧 struct LNode * next;}LNode,*LinkList;typedef的用法不在此细说,可以简单理解为给数据类型取别名。对于这个代码,目的是定义线性表的单链表储存结构。结构体部分比较好理解,一个是数据元素data,一个是指向本结构体的结构体指针next。关键在于LNode与*L

2021-01-23 21:59:55 9738 11

转载 函数指针详解(精要已突出)

函数指针顾名思义,指向对象为一个函数的指针。如果不想看长篇大论就看我加粗的和代码块就成。原文:如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。 既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。那么这个指针变量怎么定义呢?虽然同样是指向一个地址,但指向函数的指针变量同我们之前讲的指向变量的指针变量的定义方式是不同的。例如:int(*p)(int, int

2021-01-22 22:24:05 134

原创 C库函数-malloc与realloc详解(含对new初始化介绍)

malloc函数头文件#include <stdlib.h>或#include<malloc.h>函数原型void *malloc(unsigned int size)作用在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。返回值在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针。void* 表示未确定类型1的指针。C,C

2021-01-22 21:55:35 1677

原创 洛谷P2670 [NOIP2015 普及组] 扫雷游戏

题目描述扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。输入格式第一行是用一个空格隔开的两个整数n和m,分别表示雷

2021-01-21 19:48:29 610

原创 洛谷P1009 [NOIP1998 普及组] 阶乘之和(高精度)

题目用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。其中“!”表示阶乘,例如:5!=5×4×3×2×1。输入格式一个正整数 n。输出格式一个正整数 S,表示计算结果。题目很简洁,本题是高精度加法跟高精度乘法的混合,高精度加法用于将计算出的1!,2!,3!···n!逐个相加,高精度乘法则用于计算i!=(i-1)!*i;(代码已AC)#include<iostream>using namespace std;int a[2000];int c[2000];vo

2021-01-21 14:39:42 1817 4

原创 高精度:A*B Problem O(n^2)法

高精度乘法同样是模拟题,可以通过模拟竖式乘法的方法进行,但是本文提供的进位方式并不完全相同,小伙伴们可以看看区别。废话不多说,先上代码:#include<iostream>#include<cstring>using namespace std;int a[100000001],b[100000001],c[100000001];int main(){ string A,B; cin>>A>>B; int lena=A.size(),le

2021-01-20 22:36:13 198

原创 高精度:A+B Problem 与 A-B Problem

高精度顾名思义计算难以用常用数据类型计算的情况,主要思想即用数组模拟非常长的整数实现运算。高精度加减法实际上就是对竖式加减法的过程模拟,是一类模拟题,没有什么思维难度而且方法就在自己手上 (不会的找小学老师)。1不考虑负数的情况先上代码:#include<iostream>#include<cstring>using namespace std;int a[2000],b[2000],c[2000];int main(){ char A[2000],B[2000]

2021-01-20 21:37:41 371

空空如也

空空如也

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

TA关注的人

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