- 博客(17)
- 收藏
- 关注
原创 Codeforces Round #629 (Div. 3) 题解
AA题,给出两个数a和b,叫你求最a小的移动次数到达b,实际上就是求b-(a%b)(前提是a不能被b整除,能被整除答案肯定就是0咯)。BB题给你两个整数,第一个整数n,是该字符串的长度,第二个整数k,是该字符串第k个字典序,且该字符串只有两个字母b,其余的都是a;思路:通过观察题目中的例子我们可以知道,当两个b相邻的时候,前一个b就要向前移动一位,且后一个b回到字符串最后,否则...
2020-03-28 13:43:38
223
2
原创 数据结构——排序
排序归并排序归并归并,就是分为归和并,一个为递归函数将一串序列分为两个部,分直到这两个部分分别只有一个元素,然后就是合并函数,将两个部分,有序合并;递归函数:void Fun(int a[], int b[],int l,int r){ int c[100010]; int mid=(l+r)/2; if(l==r) b[l]=a[l]; ...
2020-02-29 21:49:23
92
原创 数据结构——图
图图:是由顶点的有穷非空集合和顶点之间边的集合组成,通俗点说就是由边和顶点共同组成的数据结构。通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。图有多种:1、无向图:图中任意两个顶点之间的边都是无向边(顶点1到顶点2之间的边没有方向,则这条边为无向边),则称该图为无向图(无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图)2、有向图:图中任意...
2020-02-29 21:17:43
487
原创 数据结构——树
树树的定义:树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且只有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2…Tm,其中每个集合本身又是一颗树,并且称为根的子树(SubTree):二叉树:二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合...
2020-02-29 19:57:29
296
原创 数据结构(栈和队列)
线性结构:线性表:是由同类型数据元素构成有序序列的线性结构。表中元素个数称为线性表的长度;线性表没有元素时,称为空表;表起始位置称表头,表结束位置称表尾。线性表中的元素之间都是一对一的关系。线性表的存储:一、顺序存储:利用数组的连续存储空间顺序存放线性表的各个元素对顺序线性表的操作有插入和删除1、插入:我们有一个长度为len的数组,要在它的第i个位置插入新元素n:int size;...
2020-02-29 15:05:00
142
原创 2020年2月28日学习日志
8.30-10.30背单词+背范文 +英语课试课 (2小时)10.30-11.30 (1小时)用记事本写代码真的不方便,但确实有得到锻炼,(输入中文之后没有换成英文的,运行的时候就一直错误,改过来之后又没有保存(以为会自动保存,是我憨了),然后继续错,就搞了好久才搞对。写打印菱形的那个循环,格式不和cd上一样,很不习惯也搞了挺久的。。。13.00-17.00写P...
2020-02-28 22:56:47
132
原创 二叉堆
二叉堆二叉堆是一种特殊的完全二叉树或者说近似于完全二叉树,他分为两种:一、最大堆:父节点的值总是大于或等于任何一个子节点的值;二、最小堆:父节点的值总是小于或等于任何一个子节点的值;下图就是两种二叉堆:对二叉堆的操作通常有三种:1.向堆中添加一个元素;2.取出堆中最小的元素(或最大的元素);3.删除堆中最小的元素(或最大的元素);注:不管是什么操作,最后得到的二叉堆必须遵守它的性...
2020-02-06 19:52:37
135
原创 快速乘
快速乘当我们要求ab%p的值的时候,如果是用普通的乘法来算的话,当ab很大的时候,就容易爆long long;这个时候我们就要用到一个极好的方法:快速乘。原理快速乘是利用乘法分配律将a*b分解成多个式子相加(将后面一个乘数转化为二进制的形式计算)求解。例如:12*11=12*1011(2)=12*2^3*1+12*2^2*0+12*2^1+12*2^0=96+24+12=132看看代码:...
2020-02-03 16:55:32
143
原创 字符串哈希——Hash
字符串哈希字符串哈希,用通俗点的说法就是将一个字符串转换成一个整数,而且用哈希转换出来的整数,不同的字符串,不出意外整数也不一样(存在极少的情况一样),从而更方便地确定某个字符串是否重复出现过。基本思想:假设一个字符串:abcdabcd;将整个字符串看成一个p(p一般取131或者13331比较好,可以减少冲突的概率)进制数,将a->z看成1->26;然后abcdabcd就变成了...
2020-02-02 21:00:00
375
原创 单调栈
单调栈定义:单调栈,是栈里面的特殊一种,顾名思义,单调栈里的元素都保持都单调(单调递增或单调递减):单调递增栈:从栈底到栈顶单调递增;单调递减栈:从栈底到栈顶单调递减;下面就是一个单调递增栈:算法作用:单调栈可以求某组数中,以某个数为最小值的最大延伸区间;下面这个题是一个很经典的单调栈的题目:单调栈在这里的作用就是可以知道每个高度能向左向右延伸的最大宽度,从而求出最大矩形面积...
2020-01-31 14:53:03
94
原创 并查集
并查集我们来通过一个例题来学习这个有趣且不是很难得算法:看看题目:为什么是两个朋友圈呢?1和2是朋友,然后2和3又是朋友,所以1,2,3三个人互为朋友关系,然后4和5是朋友,且4和5均与1,2,3没有关系,所以就有两个朋友圈,分别是1,2,3和4,5;好,现在题目理解了,怎么用代码来解决这个问题呢?这里我们就要用到并查集了;并查集通过一个一维数组来实现,就好比这题来讲,一开始,每...
2020-01-23 15:42:31
114
原创 归并排序求逆序数
归并排序求逆序数今天,来学习一下归并排序求逆序数,首先,来学习归并排序归并排序归并归并,就是分为归和并,一个为递归函数将一串序列分为两个部,分直到这两个部分分别只有一个元素,然后就是合并函数,将两个部分,有序合并;看代码:递归函数void Mer(int a[], int b[],int l,int r){ int c[100010]; int mid=(l+r)/2;...
2020-01-22 00:16:25
133
原创 学习总结(1.15——1.20)
1.15—1.16快速幂这两天研究了下快速幂,快速幂可把我难倒了,看了很多视频,也向别人请教了,但是后来发现好像不是很难,可能是刚放假,没有静下心来,好在我调整好了自己的状态。我还记得当时写那个快速幂的每日一题,我还没学快速幂,我就用循环写,然后就时间超限了,所以快速幂就能解决这个棘手的问题。1.17—1.18尺取这两天学的是尺取,我很喜欢别人的比喻——毛毛虫,冬天与火锅更配,看了下题,...
2020-01-21 20:22:42
269
原创 尺取——C语言
尺取相比于普通的直接暴力枚举,尺取效率就高的多了。用一个题目来比较一下如果用通常的方法来解决这个问题就是这样的:#include<stdio.h>long long int a[2000010];int main(){ long long int n,m; scanf("%lld%lld",&n,&m); for(int i=1;...
2020-01-18 12:28:46
239
原创 快速幂和快速幂取模——C语言
快速幂及快速幂取模——C语言最近,我学习了快速幂和快速幂取模,今天我来整理一下。快速幂取模,首先我们要学会快速幂。快速幂例如:要你求2^10;我第一个想到的就是循环,暴力解决;这种方法固然好理解,但是很容易出现时间超限的情况,所以,这个时候,快速幂就起作用了,快速幂,顾名思义,就很快,那么他是怎么做到快的呢?我们一起往下看:例子:还是2^10。运用一下初中的数学知识:这样,就...
2020-01-17 15:54:13
494
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人