算法模板
算法小猪
unknow.
展开
-
【模板】高精度
一、高精度加法// C = A + B, A >= 0, B >= 0vector<int> add(vector<int> &A, vector<int> &B){ if (A.size() < B.size()) return add(B, A); vector<int> C; int t = 0; for (int i = 0; i < A.size(); i ++ )原创 2021-06-05 22:08:11 · 123 阅读 · 0 评论 -
快读模板
一、整型快读模板专门读取int型getchar():将数字转化为字符读取,速度比scanf,cin都快w:判断正负号代码:inline void read(int &num){ int s = 0, w = 1; char ch = getchar(); while(ch < '0' || ch > '9'){ if(ch == '-') w...原创 2020-02-16 20:45:22 · 675 阅读 · 0 评论 -
三种最短路模板
一、Floyd算法——只有五行代码的算法算法思想:从节点i到节点j的最短路径只有2种可能:1)直接从节点i到节点j2)从节点i经过若干个节点k到节点j假设dis(i,j)为节点i到节点j的最短路径的距离对于每一个节点k,我们检查dis(i,k)+dis(k,j) < dis(i,j)是否成立,如果成立,证明从i到k再到j的路径比i直接到j的路径短.于是dis(...原创 2020-02-25 12:17:12 · 630 阅读 · 0 评论 -
快速幂模板
快速幂#include<bits/stdc++.h>using namespace std;int Quick_pow(int a,int b){ int ans=1,base=a;// ans:结果;base:底数 while(b) { if(b & 1)//等于b%2==1 { ans=ans*base; } base=base*base; b =原创 2020-07-10 22:01:12 · 2247 阅读 · 0 评论 -
二分模板
整数二分模板while(x<=y)//<=或<根据来定,如果从0开始则<,从1开始则<={ mid=(x+y)/2; if(check(mid)==1)//check函数用来检查答案 { x=mid+1;//注意 ans=mid; } else y=mid-1;//注意}实数二分模板double l=...,r=...;while(r-l原创 2020-07-10 22:19:07 · 165 阅读 · 1 评论 -
并查集模板
并查集并查集是个数据结构,围绕着一个就是根节点展开,若两点的根节点相同那么就肯定在一棵树内,所以我们只需要维护一个点的父亲节点就好了,然后每次询问都查找根节点是否相同。但若树退化成链的话,我们就需要判断两点和根节点的关系,保留当前点的根节点关系就好了,这样的优化方式我们叫做路径压缩。1.普通并查集模板初始化:void mem(int n) { for (int i=0;i<=n;i++) { father[i]=i; R[i]=1;//秩优原创 2020-07-12 16:00:41 · 3035 阅读 · 0 评论 -
字典树模板
初始化(memset)一棵空字典树仅包含根节点,所以该点字符指针均指向空。代码:int trie[N][26],tot=1;//26个字母 char str[N];插入(insert)当需要插入一个字符串S时,我们让一个指针P指向根节点。然后依次扫描S中的每个字符c:1.若P的c字符指针指向一个已经存在的节点Q,让P=Q.2.若P的c字符指针指向空,则新建节点Q,让P的c字符指针指向Q,令P=Q.当S中的字符扫描完毕时,在当前节点P上标记他是一个字符串的结尾。代码:void inse原创 2020-07-13 23:13:22 · 235 阅读 · 0 评论