随笔分类 -  模板

1

PAT 1003 Emergency(Dijstra算法解决)
摘要:1003 Emergency (25 分) 1003 Emergency (25 分) 1003 Emergency (25 分) As an emergency rescue team leader of a city, you are given a special map of your co 阅读全文
posted @ 2019-09-02 15:03 sapphirebitter 阅读(550) 评论(0) 推荐(0)
Calling Circles(UVa 247)(Floyd 算法)
摘要:用Floyd算法求出传递闭包,然后用dfs求出每条连通分量。注意其中用到的几个小技巧: 阅读全文
posted @ 2018-03-08 21:34 sapphirebitter 阅读(155) 评论(0) 推荐(0)
Floyd(求每2个点之间的最短路)
摘要:稍微改变即可求传递闭包,即关心两点之间是否有同路: 阅读全文
posted @ 2018-03-07 20:00 sapphirebitter 阅读(453) 评论(0) 推荐(0)
Bellman-Ford算法(在边权可正可负时求最短路)
摘要:使用FIFO队列实现: 阅读全文
posted @ 2018-03-05 20:27 sapphirebitter 阅读(188) 评论(0) 推荐(0)
Favorite Donut(HDU 5442)最小表示法+二分
摘要:题目给出一个字符串,由a~z表示甜度,随字典序增大,字符串首尾相连形成一个圈,要求从一个位置开始字典序最大的字符串,输出位置以及是顺时针还是逆时针表示。顺时针用0表示,逆时针用1表示。 此题只需要查找字符串的最大字典序排列即可,模拟对字符串的翻转以及排列操作,可以用二分来查找位置来节省时间。 最小表 阅读全文
posted @ 2017-12-05 21:44 sapphirebitter 阅读(185) 评论(0) 推荐(0)
Keuskal算法模板
摘要:int cmp(const int i, const int j) { return w[i]<w[j]; }///间接比较函数,w[i]表示边i权值 int find_set(int x) { return p[x] == x ? x : p[x] = find_set(p[x]);} int Kruskal(){ int ans = 0; for (int i =... 阅读全文
posted @ 2017-11-22 22:21 sapphirebitter 阅读(204) 评论(0) 推荐(0)
strstr函数的运用
摘要:strstr函数用于搜索一个字符串在另一个字符串中的第一次出现,该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。 阅读全文
posted @ 2017-11-20 21:15 sapphirebitter 阅读(238) 评论(0) 推荐(0)
无根树转有根树模板
摘要:vector G[maxn]; void read_tree(){ int u,v; scanf("%d",&n); for(int i = 0; i < n-1; i++){ scanf("%d%d",&u,&v); G[u].push_back(v);///输入u相邻的点v G[v].push_back(u); ... 阅读全文
posted @ 2017-11-15 20:55 sapphirebitter 阅读(168) 评论(0) 推荐(0)
Dijkstra(迪杰斯特拉)模板
摘要:直接将模板封装在结构体里面。 阅读全文
posted @ 2017-10-23 20:18 sapphirebitter 阅读(554) 评论(0) 推荐(0)
DP常用模板
摘要:递推模板: 从结果往回推,需要设定边界为无穷大,并建立状态转移方程 阅读全文
posted @ 2017-10-09 20:39 sapphirebitter 阅读(432) 评论(0) 推荐(0)
二分搜索以及查找区间的上下界
摘要:二分查找: 二分查找求下界: 二分查找求上界: 阅读全文
posted @ 2017-09-20 22:03 sapphirebitter 阅读(362) 评论(0) 推荐(0)
n!的质因子分解
摘要:其中k为任意质因子,因为a的数值不确定,所有k的值可以任意选择。 以下代码用于求出m!: 阅读全文
posted @ 2017-08-16 10:45 sapphirebitter 阅读(620) 评论(0) 推荐(0)
质因子分解(Pollard_Rho法)
摘要:LL Pollard_Rho(LL n, LL c) { LL x, y, d; LL i = 1, k = 2; x = y = rand() % n; do { i++; d = gcd(n + y - x, n); if(d > 1 && d = n) t = Pollard_Rho(n, ra... 阅读全文
posted @ 2017-08-16 10:09 sapphirebitter 阅读(307) 评论(0) 推荐(0)
米勒-拉宾素性测试
摘要:#include using namespace std; /** //普通快速幂 LL pow_mod(LL a, LL x, LL p) { LL res = 1; while(x) { if (x & 1) res = (unsigned long long)res * a % p; x >>= 1; a = (unsign... 阅读全文
posted @ 2017-08-16 10:07 sapphirebitter 阅读(306) 评论(0) 推荐(0)
简单矩阵快速幂(HDU Tr A 1575)
摘要:题目中所给的方阵就是一个矩阵,而就是只要将题目所给矩阵不断进行相乘即可,本题中我采用的是直接重载运算符*,使矩阵每一个都进行运算,可以简化为只对对角线上的元素进行运算。最后所得结果就只需将最终的矩阵上的对角线上的数相加即可。快速幂即是将指数进行质因子分解,从而减少运算,比如15=7*2+1,而7=3 阅读全文
posted @ 2017-08-15 17:17 sapphirebitter 阅读(226) 评论(0) 推荐(0)
矩阵快速幂(以HDU1757为例)
摘要:对于数据量大的求余运算,在有递推式的情况下,可以构造矩阵求解。 A - A Simple Math Problem A - A Simple Math Problem Lele now is thinking about a simple function f(x). If x < 10 f(x) 阅读全文
posted @ 2017-08-15 11:28 sapphirebitter 阅读(208) 评论(0) 推荐(0)
BFS模板
摘要:bool visit[maxn];///访问标记 const int dr[]= {-1,0,1,0,-1,1,-1,1}; ///向左上右下,左下,右上,右下,左上 const int dc[]= {0,1,0,-1,-1,1,1,-1}; struct node { int r; int c; int step; }; node input[maxn]; void b... 阅读全文
posted @ 2017-08-14 16:39 sapphirebitter 阅读(159) 评论(0) 推荐(0)
二叉树的非递归遍历
摘要:typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; ///左右孩子 } BiTNode,*BiTree; void PreOrder_Nonrecursive1(BiTree T) ///先序遍历的非递归 { if(!T) return ; ///如果结点为空,终止 ... 阅读全文
posted @ 2017-08-02 10:58 sapphirebitter 阅读(132) 评论(0) 推荐(0)
二叉搜索树
摘要:#include using namespace std; const int maxn=105; int n; struct Node///建立结点,用结构体加指针,v表示结点的值 { int v; Node *left,*right;///用指针指向左子树和右子树 Node():left(NULL),right(NULL) {}///创建新结点 } tree ; No... 阅读全文
posted @ 2017-08-01 15:31 sapphirebitter 阅读(143) 评论(0) 推荐(0)
快速排序函数及二分法匹配
摘要:快速排序: 二分法匹配: 阅读全文
posted @ 2017-01-21 20:09 sapphirebitter 阅读(164) 评论(0) 推荐(0)

1