算法
猫的旅途
开始一场算法的旅行吧!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【STL】Vector
C 语言里用 int arr[ ] 来定义数组,它的缺点是数组的长度不能随心所欲的改变,而 C++ 中的动态数组 vector(矢量) 可以解决这个问题,甚至可以完全替代;它能够在运行阶段设置数组的长度,在末尾增加新的数据,在中间插入新的值,长度可以任意改变,简直不要太好用(偷笑????????)它在头文件 vector 里面,也在命名空间 std 里面;【头文件】#include<vector>using namespace std;【定义】vector 是一个动态原创 2020-11-01 23:10:37 · 185 阅读 · 0 评论 -
约数
int factor[1600], m = 0;for(int i = 1; i <= sqrt(n); i++){ if(n%i == 0){ factor[++m] = i; if(i != n%i) factor[++m] = n/i; }} for(int i = 1; i <= m; i++){ cout << factor[i] << " ";}vector<int> factor[500010];f...原创 2020-10-22 20:55:28 · 163 阅读 · 0 评论 -
RMQ算法
给一个数组 ,其中有 N 个数字,现在有 n 次询问,给你区间 [l ,r],问你在这个区间内的最大或最小值为多少?看到这种问题,我们首先想到的是用 for 循环遍历得出最大最小值,可是,在数字非常大的情况下,这种方法还能行得通吗?比如,N=50000,有不大于 200,000 次询问,很明显会超时,那我们应该怎样去处理这类问题呢?此时,就需要用RMQ来解决此类问题。????RMQ (Range Minimum/Maximum Query),即区间最值查询,此类问题是指:对于长度为 n 的数列原创 2020-10-19 20:57:38 · 317 阅读 · 0 评论 -
树状数组
目录定义结构起源分析常用操作更新元素求前缀和实战定义 树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值。 现多用于高效计算数列的前缀和, 区间和。结构起源 正如所有的整数都可...原创 2020-10-07 09:47:05 · 311 阅读 · 0 评论 -
快速幂
模板:long long quickpower(long long x, long long y){ long long ans=1, cnt=x; while(y){ if(y & 1){ ans *= cnt; } cnt *= cnt; y >>= 1; } return ans;}序列的第 k 个数【题目描述】BSNY 在学等差数列和等比数列,当已知前三项时,就可以知道是等差数列还是等比数列。现在给你序列的前三项,这个序列...原创 2020-07-03 12:06:48 · 209 阅读 · 0 评论 -
回文数的判断
本文是观看了很多博客,最后整理而成……回文串:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。手动判断该字符串是否为回文串:#include <iostream>using namespace std;int main(){ string str; int i, j; while (cin >> str){ int flag = 1; for (i = 0,j = st原创 2020-06-27 07:26:41 · 569 阅读 · 0 评论 -
素数的判断
要判断素数,我们首先来了解一下什么是素数素数:也称为质数,素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。下面我们来判断一个数是否为素数首先,来一个最普遍的:#include<cstdio>#include<cmath>int su(int n){ if(n < 2) return 0; for(int i = 2; i <= sqrt(n); i++){ if(n%i == 0){ return 0;原创 2020-06-22 20:22:24 · 335 阅读 · 0 评论 -
最大公约数 / 最小公倍数
最大公约数定义:也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b 的最大公约数记为(a,b),同样的,a,b,c 的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。最小公倍数定义:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c 的最小公倍数记为[a,b,c],多个整数的最.原创 2020-06-12 23:42:31 · 735 阅读 · 0 评论
分享