算法基础
文章平均质量分 54
1.基础算法
2.数据结构
3.图论
4.数学基础
5.动态规划
6.贪心
wenyisir
这个作者很懒,什么都没留下…
展开
-
数论
数论 1.线性筛 2.费马小定理&欧拉定理 3.高斯消元 4.(扩展)中国剩余定理 5.BSGS原创 2021-03-12 16:15:39 · 233 阅读 · 0 评论 -
基础算法模板
基础算法模板 高精度 bool _cmp(vector<int> a,vector<int>b)//a>=b { if(a.size()!=b.size())return a.size()>b.size(); for(int i=a.size()-1;i>=0;i--) if(a[i]!=b[i])return a[i]>b[i]; return 1; } vector<int>add(vector<int> &a,v原创 2021-02-25 22:22:31 · 117 阅读 · 0 评论 -
字符串
1.字符串哈希 2.KMP 3.EXKMP原创 2021-02-20 15:20:05 · 72 阅读 · 0 评论 -
图论总结
强连通分量(SCC) targan: 时间戳 1.dfn[u]:遍历到u的时间 2.low[u]:从u开始走,所能遍历到的最小的时间戳原创 2021-02-18 22:13:47 · 81 阅读 · 0 评论 -
关于字符串用法的一些总结
字符数组和字符串的一些总结 1.C语言字符串输入输出操作 输入 ●scanf("%s",line):读到空格结束//此处的line不用加&,因为line为数组名,即地址。 ●gets():只能输入字符串,一次读入一行,读到换行符结束,但换行符会被丢弃,然后在末尾添加’\0’字符。 //不要char*p,然后gets§,这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址 输出: ●...原创 2020-04-17 21:50:56 · 302 阅读 · 0 评论 -
树链剖分
树链剖分 预备知识 1.dfs序 2.链式前向星 3.线段树/树状数组 树链剖分 树链剖分,指一种对树进行划分的算法 (你别告诉我你不知道什么是树) ,它先通过轻重边剖分将树分为多条链,保证每个点属于且只属于一条链,然后再通过数据结构(树状数组、BST、SPLAY、线段树等)来维护每一条链。~~ 1.可能涉及到的名词解释 1.重儿子:非子叶结点的儿子中儿子最多的结点为重儿子(有点绕) 2.轻儿子...原创 2020-04-16 23:17:57 · 141 阅读 · 0 评论 -
SG函数
任何一个公平的组合游戏都可以把每个局面看成一个顶点,对每个局面和他的子局面连一条有向边来抽象成图。下面我们就在有向无环图的顶点上定义SG函数。 首先定义mex()函数的运算:定义mex(S)为求出不属于集合S的最小非负整数的运算。例如:mex{1,2,3}=0;mex{0,1,2}={3}. 再来考虑一下顶点的SG值得意义。以下棋为例,当某枚棋子的SG值为k时,说明可以通过一次操作,我们可以把它变成0-k-1中的任何一个数,但是不能仍然为K。 对于n个棋子,假设他们的SG值分别为a1,a2…an;我们设对于原创 2020-07-05 15:50:31 · 275 阅读 · 0 评论 -
欧拉筛(线性筛)
实现: #include<stdio.h> using namespace std; const int MAX_N=1e8; int prime[MAX_N],cnt; bool st[MAX_N];//使用bool数组节省空间 void is_prime(int n){ for(int i=2;i<=n;++i){ if(!st[i])prime[cnt++]=i; for(int j=0;prime[j]<=n/i;++j){ st[i原创 2020-05-26 16:36:17 · 288 阅读 · 0 评论