![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习记录
文章平均质量分 74
GejinZ
We are all Procrastinators. Just Take Action and Be Serious.
展开
-
组合数取模(杨辉三角+Lucas定理+模合数)
/* (1) 1 <= m <= n <= 1000 和 1 <= p <= 10^9 ( p可以是任何数 ) 这个问题比较简单,组合数的计算可以靠 杨辉三角 ,那么由于和的范围小,直接两层循环即可。*/long long C[maxn][maxn];void Comb(int n, int m, int p){ memset(C, 0, sizeof(C));原创 2015-09-21 16:23:59 · 1966 阅读 · 0 评论 -
两种 eratosthenes 筛法的时间比较,第二种快很多会比较好用
#include#include#include#includeusing namespace std;const int maxn = 10000005;int vis[maxn];int n;//int eratosthenes()//{// memset(vis,0,sizeof(vis));// for(int i=2;i原创 2014-08-11 13:37:42 · 974 阅读 · 0 评论 -
list and vector 查找等等……
C++ 标准库 vector list map 基本使用方法 示例程序在stdafx.h中:#include #include #include #include #include using namespace std;MFC工程中:void CVectorTestDlg::OnButton1(){/*翻译 2014-07-25 20:45:59 · 725 阅读 · 0 评论 -
错排问题(递推方法求解)例题是hdu4535 和 1465
#include#include#includeusing namespace std;long long f[200];int main(){ int n; f[2]=1;f[3]=2; for(int i=4;i { f[i]=(i-1)*(f[i-1]+f[i-2])%1000000007;原创 2014-07-22 19:35:27 · 767 阅读 · 0 评论 -
分割平面或分割空间问题
(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直翻译 2014-07-22 18:56:39 · 637 阅读 · 0 评论 -
由N*N的正方形中有几个正方形,有几个长方形 而想到的
在N边的正方形,正方体,超正方体(4维平面),内分别有多少个正方形(体,超体),长方形(体,超体);对于N边的正方形,所含有依次从1~N边长的正方形为:N*N+(N-1)*(N-1)+…………2*2+1*1;同理可知,正方体,超正方体,依次为从1到N的三次方和,四次方和。对于N边的正方形,所含的矩形的数目为I*J(其中I的范围是1~N,J的范围也是1~N)之和,即为(i*(转载 2014-03-01 00:27:33 · 3650 阅读 · 0 评论 -
很好理解的大数除法,表示自己理解大数除法就靠它了~谢谢代码的主人~
~#include #include #include #define MaxLen 200 //函数SubStract功能: //用长度为len1的大整数p1减去长度为len2的大整数p2 // 结果存在p1中,返回值代表结果的长度 //不够减 返回-1 正好够 返回0 int SubStract( int *p1, int *p2,转载 2014-02-24 22:31:03 · 888 阅读 · 0 评论 -
基数排序
百度百科上写的代码像是一坨翔。1.基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用。2.基数排序的实现方法分为两种:最高位优先(Most Significant Digit first)法原创 2017-03-30 11:15:05 · 522 阅读 · 0 评论 -
基础数学总结
1.最基础的辗转相除法 O(log max(a, b))// 复杂度O(log max(a,b))int gcd(int a, int b){ if(b == 0) return a; return gcd(b, a%b);}2.扩展欧几里得算法 O(log max(a, b))/* 用于解决方程:ax + by = gcd(a, b) 事实上,一定存在原创 2015-09-18 16:48:58 · 569 阅读 · 0 评论 -
中国剩余定理 互质与不互质两种
1.什么是中国剩余定理?这个问题困扰了窝好久,看了好多书上的解释,但都很片面地只进行了部分阐述...搞得我也是迷乱..最后发现还是百度百科讲的最靠谱了...(也可能是看的多了自己就懂了吧..百度百科上的所给的证明非常棒..浅显易懂!(窝都看懂了...一发链接:孙子定理然后还是说一下我的理解吧:下面这个一元线性同余方程组原创 2015-09-20 11:38:16 · 2438 阅读 · 0 评论 -
基础数学总结 关于模运算 1
1.模运算基本公式 和 几点注意/* (a + b) mod n = ((a mod n) + (b mod n)) mod n (a - b) mod n = ((a mod n) - (b mod n) + n) mod n (a * b) mod n = ((a mod n) * (b mod n)) mod n 对于除法没有类似公式,但是可以通过求逆元的原创 2015-09-18 20:23:27 · 2627 阅读 · 0 评论 -
反思 并查集
最近其实并没有刻意去练并查集,不过昨天和今天做到了两道题目,均是用并查集来解决的在解决这两道题目的过程中,我在运用并查集的时候,都出现了严重的错误。具体表现在,思路很清晰,应该怎么做也很明白,但是在处理的过程中对并查集的操作并不正确。很多时候都出现了由于对两个节点互相赋值而造成的find函数中的死循环。然而我并不清楚是什么原因。其中一一道题目,是赛码杯1003 是一个判断是原创 2015-05-05 22:07:36 · 488 阅读 · 0 评论 -
学习欧拉phi函数的思考
其正确性思考写在了代码片上#include#include#includeint phi[5000000];///考虑到若所计算的数字是6,当i=2和i=3时都将会进入内层循环,///一旦进入内层循环就会在该素数的基础上进行欧拉公式的运算///插入:欧拉公式:phi(n)=n*(1-1/p1)*(1-1/p2)*...(1-1/pn)///可以想到对于每一个确定的数字n来说原创 2014-08-12 15:29:23 · 1681 阅读 · 0 评论 -
分数运算模板!!fraction!!
#include #include #include #include #include #include #include using namespace std;typedef long long ll;ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}struct frac{ ll up,low; frac(原创 2014-08-14 13:42:38 · 610 阅读 · 0 评论 -
欧拉函数
由费马小定理 得出的 欧拉函数欧拉函数的值 = 不超过m 并且 和m互质 的数的个数/* 求欧拉函数的值 O(sqrt(n))*/int euler_phi(int n){ int res = n; for(int i = 2; i * i <= n; i++){ if(n % i == 0){ res = res / i *原创 2015-09-18 21:12:21 · 420 阅读 · 0 评论 -
树链剖分学习记录
HDU 3966 基于点权 修改(增减)一条路径上的点 单结点查询code:#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#includeusing namespace std;const int maxn = 50010;struct Edge{ int to, n原创 2015-08-16 11:38:11 · 617 阅读 · 0 评论 -
矩阵优化的模板(用的时候注意要修改呀)
1.这个是我在算概率dp的时候用的一个~是浮点数啦,然后没有取余操作的~struct Matrix{ double mat[2][2];};Matrix mul(Matrix a,Matrix b){ Matrix ret; for(int i=0;i<2;i++) for(int j=0;j<2;j++) { ret原创 2015-08-01 10:29:05 · 455 阅读 · 0 评论 -
树链剖分
“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。 记siz[v]表示以v为根的子树的节点数,dep[v]表示v的深度(根深度为1),top[v]表示v所在的链的顶端节点,fa[v]表示v的父亲,son[v]表示与v在转载 2015-05-15 01:18:14 · 459 阅读 · 0 评论 -
分治法 求 逆序对数 的个数 时间复杂度为O(n*logn)
思路:分治法 归并排序的过程中,有一步是从左右两个数组中,每次都取出小的那个元素放到tmp[]数组中右边的数组其实就是原数组中位于右侧的元素。当不取左侧的元素而取右侧的元素时,说明左侧剩下的元素均比右侧的第一个元素大,即均能构成一个逆序对。假设现在左侧剩余n个元素,则逆序对数+n。另外,如果当所有右侧的元素都取完,但是左侧仍然有元素剩余时,左侧剩余的元素已经在之前的运算中加到了逆序对中原创 2015-04-02 21:47:45 · 1748 阅读 · 0 评论 -
二分图判定 (黑白二着色法)
bool bipartite(int u) { for (int i = 0; i < g[u].size(); i++) { int v = g[u][i]; if (color[v] == color[u]) return false; if (!color[v]) { color[v] = 3 - color[u原创 2015-03-14 14:49:46 · 2039 阅读 · 0 评论 -
连通分量 无向图的割顶和桥 无向图的双连通分量 有向图的强连通分量
时间戳 dfs_clock :说白了就是记录下访问每个结点的次序。假设我们用 pre 保存,那么如果 pre[u] > pre[v], 那么就可以知道先访问的 v ,后访问的 u 。现在给定一条边, (u, v), 且 u 的祖先为 fa, 如果有 pre[v] 1 求连通分量:相互可达的节点称为一个连通分量;#include #include #i原创 2015-03-14 14:44:12 · 780 阅读 · 0 评论 -
SPFA 求带负权的单源最短路
int spfa_bfs(int s){ ///s表示起点; queue q; memset(d,0x3f,sizeof(d)); ///d数组中存下的就是最短路径(存在的话) d[s] = 0; memset(c,0,sizeof(c));///c数组表示的是某一个节点的入队次数 memset(vis,0,sizeof(vis));///一如既原创 2015-03-12 20:48:50 · 982 阅读 · 0 评论 -
趣写算法系列之--匈牙利算法
原网址:http://blog.csdn.net/dark_scope/article/details/8880547转载 2015-03-10 16:37:08 · 530 阅读 · 0 评论 -
唯一分解定理
#include#include#include#include#includeusing namespace std;const int maxn = 1e8 + 10;const int maxp = 1e7 + 10;int vis[maxn];int p_cnt;int prime[maxp];void Eratosthenes(int n){ int m原创 2014-11-01 16:51:19 · 703 阅读 · 0 评论 -
我只是来存捡来的大数模板的...
#include#include#includeusing namespace std;#include #include using namespace std;#define DIGIT 4 //四位隔开,即万进制#define DEPTH 10000 //万进制#define MAX 10000 //题目最大位数/4,要不大原创 2014-08-14 20:55:10 · 503 阅读 · 0 评论 -
leetcode 10 Regular Expression Matching(Dynamic Programming)
题意:'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string (not partial).The function prototype should be:bool isMa原创 2017-04-26 21:37:19 · 867 阅读 · 0 评论