ACM模板
FZH_SYU
在这个时代,每个人怀揣着梦想,坚持地迈着步子走。这个时代,正因如此,才会愈发精彩。
展开
-
ACM之路———算法模板(基础算法)
算法模板一、DP 二、博弈 三、最小生成树 四、最短路 五、二分图匹配 六、字符串匹配 七、动态数据查询(线段树、树状数组) 八、字典树 九、强连通(tarjan) 十、LCA倍增法 十一、STL(map、优先队列、栈、堆排序) 十二、高斯消元(整型)一、基础DP类型(1)01背包 for(int i=0;i<n;i++) for(int j=m原创 2016-08-20 11:40:22 · 1345 阅读 · 0 评论 -
扩展欧几里得、求逆元、组合数模板
ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0) { x=1,y=0; return a; } ll res=exgcd(b,a%b,y,x); y-=a/b*x; return res;}ll Inv(ll a){ ll d,x,y; d=exgcd(a,mod,原创 2018-05-08 22:09:29 · 532 阅读 · 0 评论 -
快速幂、快速乘模板
ll mult_mod(ll a,ll n){ ll ans=0; a%=mod,n%=mod; while(n) { if(n&1) ans=(ans+a)%mod; a=(a+a)%mod; n>>=1; } return ans%mod;}ll quick_mod(ll a原创 2018-05-08 22:00:44 · 471 阅读 · 0 评论 -
矩阵快速幂模板
ll make[6][6]={ //构造矩阵 1,1,1,1,1,1, 1,0,0,0,0,0,0,0,1,3,3,1,0,0,0,1,2,1,0,0,0,0,1,1,0,0,0,0,0,1};struct Matrix{ ll m[10][10]; void init(){ //矩阵初始化 memset(m,0,si原创 2018-05-08 21:55:51 · 275 阅读 · 0 评论 -
最短路模板(SPFA)
void SPFA(int s){ queue<int> q; memset(vis,0,sizeof(vis)); d[s]=0; vis[s]=1; q.push(s); while(!q.empty()) { int u=q.front(); q.pop(); vis[u]=0;原创 2018-05-08 21:01:04 · 456 阅读 · 0 评论 -
最短路模板(Dijkstra)
普通版int d[N],vis[N],g[N][N];int n,m,a,b,len;void Dijkstra(int s){ for(int i=1;i<=n;i++) d[i]=g[s][i]; memset(vis,0,sizeof(vis)); vis[s]=1; for(int i=1;i<=n;i++) { in原创 2018-05-08 20:44:03 · 320 阅读 · 0 评论 -
拓扑排序模板
queue<int> q; vector<int> vec; //邻接表表示点与点之间的关系 int n,m,Indeg[maxn]; //表示入度的个数 bool topsort(){ for(int i=1;i<=n;i++) if(!Indeg[i]) q.push(i); int cnt=0; while(!q.empty()原创 2018-05-08 20:15:24 · 201 阅读 · 2 评论 -
POJ 图论题目大集合
POJ图论分类2009-07-28 23:13POJ 2449 Remmarguts’ Date(中等) http://acm.pku.edu.cn/JudgeOnline/problem?id=2449 题意:经典问题:K短路 解法:dijkstra+A*(rec),方法很多 相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_转载 2017-02-02 12:42:48 · 1680 阅读 · 0 评论 -
ACM之路——算法模板(数学)
在说正事之前,先说说题外话,进集训队也有将近八个月,感觉这就是一个靠数学吃饭的地方,另外还需要努力,每一道题目你解决它所花的时间跟你的进步是成正比的,路还有那么长,不过今年就要参加省赛了,剩下的时间不多,赶紧补题去!!!数学在比赛中占的比重比较大,主要是数论、公式、递推、组合、概率、矩阵、博弈等等,目前更新一部分的模板,另外一部分会马上更新,请大家不要着急。一、简单数论、特殊公式(1)素数判定boo原创 2016-08-13 15:55:05 · 2144 阅读 · 1 评论 -
线段树模板
单点更新int sum[N<<2],x[N];void PushUp(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];} void build(int l,int r,int rt){ if(l==r) { scanf("%d",&sum[rt]); return ; } int m=(l原创 2018-05-08 22:55:09 · 196 阅读 · 0 评论