随笔分类 - 模板
摘要:#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define LL long long using namespace std; const int MAXSIZE = 100100; int b[
阅读全文
摘要:理解:http://blog.sina.com.cn/s/blog_60707c0f0100wvn3.html 题目转载 https://blog.csdn.net/zxyoi_dreamer/article/details/82668442 描述地震已经破坏了农夫约翰所有的农场以及所有连接农场的道
阅读全文
摘要:求,其中,并且是素数。 #include <iostream> #include <string.h> #include <stdio.h> using namespace std; typedef long long LL; LL n,m,p; LL quick_mod(LL a, LL b) {
阅读全文
摘要:链接:https://ac.nowcoder.com/acm/contest/301/H来源:牛客网 题描述 小乐乐上了一节数学课,数学老师讲的很好,小乐乐听的也如痴如醉。 小乐乐听了老师的讲解,知道了什么是素数,现在他想做几个习题。 现在题目来了: 首先我们先定义孤独的数:在一个区间中的一个数字x
阅读全文
摘要:大数因数分解Pollard_rho 算法 复杂度o^(1/4) #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <map> using na
阅读全文
摘要:学习资料处 HDU 1542 Atlantis 题意:给出几个矩阵求这些矩阵覆盖的面积: 给出左上角与右下角 Sample Input 20 5 4 12 4 6 2 20 5 4 12 4 6 2 Sample Output 20 #include<bits/stdc++.h> using nam
阅读全文
摘要:题目:给出图的条件 ,求1到n的最短路 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> using namespace s
阅读全文
摘要:#include<stdio.h> #include<string> #include<string.h> #include<iostream> using namespace std; //compare比较函数:相等返回0,大于返回1,小于返回-1 int compare(string str1
阅读全文
摘要:/* 高精度进制转换 把oldBase 进制的数转化为newBase 进制的数输出。 调用方法,输入str, oldBase newBase. change(); solve(); output(); 也可以修改output(),使符合要求,或者存入另外一个字符数组,备用 */ #include<s
阅读全文
摘要:您需要维护一个序列,其中需要提供以下操作: 插入一个数到序列的第 t 版本使其成为序列的第 k 项,这个数为 x ; 删除序列的第 t 版本的第 k 项; 查询序列的第 t 版本的第 k 项。 第 0 个版本为空序列。修改操作不会影响被修改的版本,而总是产生一个新版本。 您需要维护一个序列,其中需要
阅读全文
摘要:取板粗 好东西来的 1.(HDOJ2665)http://acm.hdu.edu.cn/showproblem.php?pid=2665 (POJ2104)http://poj.org/problem?id=2104 (POJ2761)http://poj.org/problem?id=2761 题
阅读全文
摘要:原理可以参考大神 LCA_Tarjan (离线) TarjanTarjan 算法求 LCA 的时间复杂度为 O(n+q) ,是一种离线算法,要用到并查集。(注:这里的复杂度其实应该不是 O(n+q) ,还需要考虑并查集操作的复杂度 ,但是由于在多数情况下,路径压缩并查集的单次操作复杂度可以看做 O(
阅读全文
摘要:不懂的可以先看这:1 2 3 求桥 #include<bits/stdc++.h> using namespace std; const int maxn = 1e3 + 10; const int maxm = 4e5 + 10; struct egde{ int v, nxt; }Edge[ma
阅读全文
摘要:模板 Kosaraju算法 int V; // 顶点数 vector<int> G[MAX_V]; // 图的邻接表表示 vector<int> rG[MAX_V]; // 把边反向后的图 vector<int> vs; // 后序遍历顺序的顶点列表 bool used[MAX_V]; // 访问标
阅读全文
摘要:115. 无源汇有上下界可行流 n 个点,m 条边,每条边 e 有一个流量下界 lower(e)和流量上界 upper(e)),求一种可行方案使得在所有点满足流量平衡条件的前提下,所有边满足流量限制。 输入格式 第一行两个正整数 n 、m 。 之后的 m 行,每行四个整数 s、t 、lower 、u
阅读全文
摘要:现在来了解A*算法是什么 现在来解决A*求K短路问题 在一个有权图中,从起点到终点最短的路径成为最短路,第2短的路成为次短路,第3短的路成为第3短路,依此类推,第k短的路成为第k短路。那么,第k短路怎么求呢? 对于第k短路,可以想到的一个比较朴素的算法就是广度优先搜索,使用优先队列从源点s进行广搜,
阅读全文
摘要:视频参考 对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O(m*n),而如果用KMP算法,复杂度将会减少线型时间O(m+n)。 设主串为ptr="ababaaababaa";,要比较的子串为a=“aab”; KMP算法用到了next数组,然后利用next数组的值来提高匹配速度,我
阅读全文
摘要:/*树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径; 原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点 证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话
阅读全文
摘要:(1)矩阵乘法 简单的说矩阵就是二维数组,数存在里面,矩阵乘法的规则:A*B=C 其中c[i][j]为A的第i行与B的第j列对应乘积的和,即: 据说,矩阵快速幂在递推式优化上相当神奇,而且效率很高。。。 两矩阵相乘,朴素算法的复杂度是O(N^3)。如果求一次矩阵的M次幂,按朴素的写法就是O(N^3*
阅读全文
摘要:我对树状数组的认识可以参考视频1与视频2,每个人的理解不一样,建议去观看大牛的理解,视频1讲的不太深入,但还是推荐先去看视频1,再去看视频2. 单点修改,区间最大 #include<cstdio> #include<iostream> #include<cstring> #include<cmath
阅读全文

浙公网安备 33010602011771号