随笔分类 -  ACM

1
摘要:目录 一、逆序数的定义 二、归并排序求逆序数 (1) 归并排序的原理及代码 (2) 归并排序求逆序数求逆序数的原理 (3) 归并排序求逆序数的代码 三、树状数组求逆序数 (1) 树状数组的原理及应用 (2) 树状数组求逆序数的原理 (3) 树状数组求逆序数的代码 四、线段树求逆序数 (1) 线段树的 阅读全文
posted @ 2023-05-15 00:52 YutaoJiang 阅读(255) 评论(0) 推荐(0)
摘要:一、欧几里得算法 1.简介 欧几里得算法又称辗转相除法,这种算法我们在高中的数学书上都有所了解,这种算法的用途是旨在求两个数的最大公约数(英文缩写为gcd)。 2.算法分析 例如,如果我们要求去寻找12和16的最大公约数,我们可以这样操作: 第一步:16 mod 12 = 4; 第二步:12 mod 阅读全文
posted @ 2022-04-26 20:13 YutaoJiang 阅读(45) 评论(0) 推荐(0)
摘要:前缀和顾名思义就是求一个序列的前缀之和,它能够在O(1)的时间复杂度内求得区间的值。 前缀和的最基本用法: 典型例题E. Yonagi and YOASOBI #include<bits/stdc++.h> using namespace std; const long long N=1e6+7; 阅读全文
posted @ 2022-04-24 17:04 YutaoJiang 阅读(39) 评论(0) 推荐(0)
摘要:一、什么是差分数组? 差分数组本质上来说就是一个数组,可以用O(1)的时间处理区间修改。 二、差分数组的定义式 设原数组为a数组,差分数组为d数组,则对于i∈[2,n],都有d[i]=a[i]-a[i-1]. 三、差分数组的性质 1.当我们需要更新区间[l,r]时候(仅指加减运算),我们仅仅可以只更 阅读全文
posted @ 2022-04-24 00:21 YutaoJiang 阅读(57) 评论(0) 推荐(0)
摘要:什么是线段树? 线段树言下之意就是将线段分解为一颗树,并且这颗树是一颗二叉树,树上的每一个节点都具有某些性质。 线段树有什么用? 线段树主要能够在O(logn)的时间复杂度上解决区间上的问题。 题目引入:AcWing243.一个简单的整数问题2 本题目就是很简单的线段树的板子题,可以用来当做模板来使 阅读全文
posted @ 2022-04-19 20:29 YutaoJiang 阅读(523) 评论(0) 推荐(1)
摘要:什么是最近公共祖先? LCA(Least Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先 百度百科 例如: 对于点9和点5,它们的最近公共祖先是点2;对于点4和点2,它们的最近公共祖先是点2。 这里答案是显而易见,但是如果我们需要用暴力来计算的 阅读全文
posted @ 2022-04-15 21:37 YutaoJiang 阅读(52) 评论(0) 推荐(0)
摘要:RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。 题目引入:AcWing 1273. 天才的记忆 本题目就是RMQ模 阅读全文
posted @ 2022-03-30 16:59 YutaoJiang 阅读(44) 评论(0) 推荐(0)
摘要:Problem A: 本题大意为存在两个长度相等的数组a、b,任意选择索引i,交换数组ai,bi的值,使得a数组的最大值乘以b数组的最大值最小。 本题不难想到我们可以遍历数组,依次将比较大的放到a数组内,否则放到b数组内。 AC代码: #include<bits/stdc++.h> using na 阅读全文
posted @ 2022-01-28 14:36 YutaoJiang 阅读(24) 评论(0) 推荐(0)
摘要:A题: 本题目大意为输出一个字符串,其字符串的每一个相同字符的距离为定值,输出任意一种情况即可。做题的时候可以直接统计字符串的个数,并统一一起输出。题目较简单,具体代码如下: #include<bits/stdc++.h> using namespace std; char a[100]; int 阅读全文
posted @ 2022-01-17 14:20 YutaoJiang 阅读(15) 评论(0) 推荐(0)
摘要:所谓的素数(质数),就是该数只能被1和他本身整除的数。 暴力写法 #include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; for(int i=2;i<=sqrt(n);i++){ if(n%i==0){ cout 阅读全文
posted @ 2021-12-24 20:57 YutaoJiang 阅读(33) 评论(0) 推荐(0)
摘要:康拓展开 当我们去搜康托展开这个关键字的时候,映入眼帘的是下面的一大堆公式: 其中X为康拓展开值 为整数,且 且表示袁数在当前未出现的元素是排第几个。 很不错,这样一下子会把人弄得搞陀不清(湖南方言)。 所以,当我们学习一个算法的时候,首当其冲的应该是要知道此算法到底是做什么用的? 百度百科是这样解 阅读全文
posted @ 2021-12-22 15:04 YutaoJiang 阅读(64) 评论(0) 推荐(0)
摘要:什么是树状数组?树状数组简单的来说就是将一个数组模拟树形结构。 树状数组有什么用?树状数组可以将求和的操作从O(n)操作简化为O(logn)。 如图所示,横线下方为a数组表示为初试数据;上方为数组c,利用树形结构存储a数组内的数据。我们列举出来的这些: c[1]=a[1] c[2]=a[1]+a[2 阅读全文
posted @ 2021-11-14 21:36 YutaoJiang 阅读(33) 评论(0) 推荐(0)
摘要:嗯... 本人在【模板】快速排序 - 洛谷题上看到大佬的题解。 觉得我之前写的好像很复杂。 代码: #include<iostream> using namespace std; int n,a[1000001]; void qsort(int l,int r)//应用二分思想 { int mid= 阅读全文
posted @ 2021-10-30 17:25 YutaoJiang 阅读(15) 评论(0) 推荐(0)
摘要:快速排序是一种高效的排序算法,不管是考研还是公司面试,快速排序算法都是我们必不可少的知识点。 本解析为快速排序的挖坑法(快排还有交换法)。 快速排序的挖坑法是快速排序的原理的实现。 具体的步骤: 设定一个基准值(一般为序列的最左边元素,也可以是最右变的元素)此时最左边的是一个坑。开辟两个指针,分别指 阅读全文
posted @ 2021-10-30 15:50 YutaoJiang 阅读(119) 评论(0) 推荐(0)
摘要:快速排序简称“快排”。在C++STL模板库内有快排的函数sort();这就阻挡住我们更深入理解快排。快排不管是各个公司的面试,还是考研,都是必考的知识点。快排其实很简单,接下来我们了解一下快排: 快速排序(Quicksort)是对冒泡排序算法的一种改进。快速排序算法通过多次比较和交换来实现排序,具体 阅读全文
posted @ 2021-10-26 16:07 YutaoJiang 阅读(98) 评论(0) 推荐(0)
摘要:插入排序:插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表 阅读全文
posted @ 2021-10-23 16:11 YutaoJiang 阅读(20) 评论(0) 推荐(0)
摘要:什么是归并排序?归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 阅读全文
posted @ 2021-10-22 12:00 YutaoJiang 阅读(78) 评论(0) 推荐(0)
摘要:#include <bits/stdc++.h> using namespace std; int sum=0; int pre[1000001]; int vis[1000001]; /*int find(int x){//压缩寻找路径 ;寻找时为了避免成为单叉数,变n叉数,以节约时间 if(pr 阅读全文
posted @ 2021-07-22 10:42 YutaoJiang 阅读(23) 评论(0) 推荐(0)
摘要:最短路问题的总结与反思 前言 什么是最短路问题? 每当我们使用BD(还有GD和TX)地图的时候,每当我们输入我们的目的地,软件会自动给我们分配路径,而这些路径包括这到达所需要的时间和所需要的路程,这个就是最短路问题。 我们给定一个定义:给定一个有向图G=(V,E),,,节点以[1,n]之间的连续整数 阅读全文
posted @ 2021-07-22 10:32 YutaoJiang 阅读(46) 评论(0) 推荐(0)

1