摘要: 最小生成树 两种方法: 1,Prim(加点法) 从随便一个点i开始,dis[i]=0,dis[其他点]=无穷, 进行n次循环, 每次找到距离集合最短距离的点k, 更新dis数组,dis数组表示点j到集合的最小距离 若dis[j]>点k和点j的距离,则更新 最后将dis数组求和即为ans 记录详情 - 阅读全文
posted @ 2021-11-10 23:03 naiji 阅读(34) 评论(0) 推荐(0)
摘要: 拓扑排序 是对图(有向无环图)中的顶点按照某种先后顺序进行遍历。 拓扑排序的实现: 用一个数组ind[1000],来表示指向第i个节点的边数, 从ind[i]为0的带你开始遍历,删除该节点连接其他节点的边,且其他节点的ind值-1, 该节点结束后,找到下一个ind为0的节点重复上述过程。 整个遍历过 阅读全文
posted @ 2021-11-10 23:02 naiji 阅读(40) 评论(0) 推荐(0)
摘要: 中缀表达式转化为后缀表达式 中缀表达式转化为后缀表达式: 使用栈,且满足如下规则: 1,遇到数字直接输出 2,遇到(进栈 3,遇到+-*/时,若栈为空进栈,若不为空,判断栈顶符号的优先级,若栈顶符号优先级>=当前符号优先级,则出栈 4,遇到),逐个出栈,直到(.后将)出栈 5,读到末尾,将栈中所有符 阅读全文
posted @ 2021-11-10 22:43 naiji 阅读(72) 评论(0) 推荐(0)
摘要: 卡特兰数 卡特兰数是组合数学中一个常出现在各种计数问题中出现的数列。 卡特兰数前几项为 : C0=1,C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,C7=429,C8=1430,C9=4862,C10=16796 输入一个整数n,计算h(n)。 令h(0)=1,h(1)=1,C 阅读全文
posted @ 2021-11-10 22:41 naiji 阅读(256) 评论(0) 推荐(0)
摘要: 逆元 逆元: 若a*x≡1(mod b) ,<a,b互质>,则称x为a的逆元, 应用: 当过程中需要计算a/b且对a/b取模时,有时b过大会超出范围,所以需要变除法为乘法。 一,费马小定理 局限性:p必须为质数 若p为质数,a为正整数,则a^(p-1)=1 (mod p); 即a^(p-1)=a*a 阅读全文
posted @ 2021-11-10 22:38 naiji 阅读(96) 评论(0) 推荐(0)
摘要: cmath中的函数 double sin(double x) double cos(double x) double exp(double x) 返回e^x double log(double x) double pow(double x,double y) 返回x^y double sqrt(do 阅读全文
posted @ 2021-11-10 22:28 naiji 阅读(124) 评论(0) 推荐(0)
摘要: 快速幂和龟速幂 快速幂: //当a=n=0时要特判 int QuickPow(int a, int n) { if (n == 0) return 1; else if (n % 2 == 1) { return QuickPow(a, n - 1) * a; } else { int temp = 阅读全文
posted @ 2021-11-10 22:28 naiji 阅读(81) 评论(0) 推荐(0)
摘要: 归并排序 1.先将数组进行二分 2,对每一部分进行排序,然后合并 #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include<vector> #include<queue> using names 阅读全文
posted @ 2021-11-10 22:27 naiji 阅读(23) 评论(0) 推荐(0)
摘要: 主要摘自逆序数 - 王陸 - 博客园 (cnblogs.com) 逆序对 定义: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 举一个例子 2 4 3 1 5 4 之前有0个 3 之前有1个 1 之前有 阅读全文
posted @ 2021-11-10 22:26 naiji 阅读(79) 评论(0) 推荐(0)
摘要: 单调栈 单调栈,就是维护一个栈,使栈中的数据大小呈现(单调递增/单调递减)。 问题描述 给定一个n行m列的矩阵,求该矩阵的最大面积子矩阵。 #include<iostream> #include<cmath> #include<algorithm> #include<stack> #include< 阅读全文
posted @ 2021-11-10 16:59 naiji 阅读(25) 评论(0) 推荐(0)
摘要: 质数 一,求1e7以内的质数,用到质数筛 欧拉筛法 //isprime[i]数组存i是否为质数 int isprime[10000001], s[10000000];//s数组存所有的质数 int k = 1; memset(isprime, 1, sizeof(isprime)); isprime 阅读全文
posted @ 2021-11-10 16:48 naiji 阅读(84) 评论(0) 推荐(0)
摘要: 并查集 维护n个元素,刚开始每个元素自己一个集合,支持两个操作。 合并两个元素所在的集合 询问两个元素是否在相同的集合内 一,带路径压缩的查找函数 int find(int x) { if (f[x] != x) { f[x] = find(f[x]); } return f[x]; } 二,合并两 阅读全文
posted @ 2021-11-10 16:34 naiji 阅读(39) 评论(0) 推荐(0)
摘要: bitset 在头文件#include中 bitset<4> a; 支持下标从0开始,0在最后面 a[0]=1;a[2]=1;//a:0101 bitset可以进行的运算: bitset<4> a,b; a=a|b; a=a&b; a=a^b; a=b<<2; a=b>>3;//移位越过的自动舍弃 阅读全文
posted @ 2021-11-10 11:35 naiji 阅读(90) 评论(0) 推荐(0)