摘要: 矩阵乘法: 行列式的概念:矩阵A=n*m,则称n为行,m为列。 矩阵乘法的要求:A*B时:A=n*k,B=k*m。A的列等于B的行。新矩阵=n*m。 新矩阵第n行,第m列的元素=A的第n行元素*B的第m列元素的乘积的和。 #include using namespace std; typedef long long ll; int mod=1e9+7; struct mat{ ... 阅读全文
posted @ 2017-10-23 10:23 TimDucan 阅读(2847) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include #include using namespace std; #define maxn 500 mapkk; stacks; char k[maxn]; char c[maxn]; inline int change(){ int i=0,cnt=0; while(c[i]!='@... 阅读全文
posted @ 2017-10-16 10:43 TimDucan 阅读(430) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std; #define maxn 500 char ca[maxn]; stacka;// stackb;//() stackc;//[] stackd;//{} stacks; //,(),[],{} inline bool check(char*cc){ int i=0; while(i'){ if... 阅读全文
posted @ 2017-10-15 21:45 TimDucan 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。 栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。 在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。 下面就给出栈的函数列表和VS2008中栈的源代码,在STL中栈一... 阅读全文
posted @ 2017-10-13 21:11 TimDucan 阅读(929) 评论(0) 推荐(0) 编辑
摘要: 如果对于一个1000000级别的素数,这样做的时间复杂度是很高了。实际上有的算法,有一个递推式如下 它的推导过程如下,设,那么 对上式两边同时除,进一步得到 再把和替换掉,最终得到 初始化,这样就可以通过递推法求出模素数的所有逆元了。 另外模的所有逆元值对应中所有的数,比如... 阅读全文
posted @ 2017-10-12 15:04 TimDucan 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 扩展欧几里德算法 基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。 证明:设 a>b。 1,显然当 b=0,gcd(a,b)=a。此时 x=1,y=0; 2,ab!=0 时 设 ax1+by1=gcd(a,b); bx2+(a mod b)y2=gcd(b,a m... 阅读全文
posted @ 2017-10-11 21:03 TimDucan 阅读(108) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std; inline int read(){ int num=0,f=1; char c=getchar(); while(!isdigit(c)){if(c=='-') f=-1; c=getchar();} while(isdigit(c)){num=(num>=1; dir=l+len; ... 阅读全文
posted @ 2017-10-06 16:54 TimDucan 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 2.算法描述 1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短... 阅读全文
posted @ 2017-10-02 17:07 TimDucan 阅读(386) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include using namespace std; inline char gc() { static char buf[1 << 18], *fs, *ft; return (fs == ft && (ft = (fs = buf) + fread(buf, 1, 1 << 18, stdin)), fs ... 阅读全文
posted @ 2017-10-01 17:18 TimDucan 阅读(119) 评论(0) 推荐(0) 编辑
摘要: syzoj.com 最短路径问题 #include #include #include #include #include #include using namespace std; vectora[100001],b[100001]; queuebfs; int dis[100001]; int main(){ memset(dis,127,sizeof(dis)); di... 阅读全文
posted @ 2017-10-01 15:20 TimDucan 阅读(128) 评论(0) 推荐(0) 编辑