
模板
acblacktea
永不放弃
展开
-
hdoj 2665 主席树模版
原理:https://www.zhihu.com/question/31133885 教程:http://www.cnblogs.com/zyf0163/p/4749042.html 基本半天可以学会,不好的教程可能扣一天#include<map>#include<set>#include<cmath>#include<queue>#include<stack>#include<cst原创 2017-04-09 21:57:56 · 468 阅读 · 0 评论 -
poj-1125-Stockbroker Grapevine spfa模板
本模板无判断负环部分, 判断负环方法记录每个点压队列次数 若有一大于V则存在负环#include<cstdio>#include<queue>#include<algorithm>#include<iostream>#include<cstring>#define maxx 999999999using namespace std;struct edge{ int x,y,dis原创 2016-01-10 22:07:43 · 415 阅读 · 0 评论 -
poj-2485-最小生成树prim算法模板
#include<cstdio>#include<cstring>int dis[505][505],t,n,sym[1000];void init(){ memset(sym,0,sizeof(sym));}int prim(){ int ans = -1; for(int i=0;i<n;i++) { int minn = 9999原创 2016-01-11 15:27:20 · 419 阅读 · 0 评论 -
poj-1258-最小生成树kruskal模板
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int n,l1,a,fa[200],am[200];struct edge{ int x,y,v;}e[20000];void init(){ for(int i=0;i<n;i++)原创 2016-01-11 17:24:05 · 544 阅读 · 0 评论 -
hdoj-1532-edmondsKarp最大流算法模板
#include<cstdio>#include<queue>#include<cstring>using namespace std;int m,n,mp[205][205],a,b,c,path[205],flow[205];int bfs(){ queue<int>qu; qu.push(1); memset(path,-1,sizeof(path));原创 2016-01-14 16:44:32 · 780 阅读 · 0 评论 -
poj-1797-Heavy Transportation dijkstra 水模板
求所有路径中最小权值最大的那条路径 水水水水水~#include<cstdio>#include<cstring>#include<algorithm>using namespace std;bool sym[1010];int mp[1010][1010],st,en,we,n,m,maw[1010];int dijkstra(){ memset(sym,0,sizeof(s原创 2016-03-26 13:15:22 · 363 阅读 · 0 评论 -
poj-3041-匈牙利算法模板
求最小点覆盖数 = 最大匹配数#include<cstdio>#include<cstring>bool way[505][505],usedif[505];int n,m,a,b,link[505];bool dfs(int s){ for(int j=1;j<=n;j++) { if(!usedif[j]&&way[s][j]) {原创 2016-01-14 00:07:02 · 443 阅读 · 0 评论 -
hdu 1255 扫描线模板
求覆盖大于一次的总面积#include<cstdio>#include<cstring>#include<algorithm>#include<map>#define lson i<<1#define rson (i<<1)+1using namespace std;double a[5000];int va[50000],n,pre;double ha[50000],len[50原创 2016-07-18 23:22:22 · 475 阅读 · 0 评论 -
hdoj 1007 临近点对算法模板
思想 分治 所有点按x坐标排序 每次把整体分成两边求出两边所有点中的最短距离然后求出中间一下片点的最短距离最后合并得总体最短距离#include<cstdio>#include<vector>#include<algorithm>#include<iostream>#include<cmath>#define LL long long#define pi acos(-1.0)#d原创 2016-07-18 23:04:57 · 593 阅读 · 0 评论 -
BestCoder 2nd Anniversary Wool 区间合并模板
抽象出各个区间然后区间合并 区间合并算法 按左端点从小到大进行排序,并设立一个变量记录此时的最右端,从1->n扫一遍 每次分情况讨论且刷新最右端值这个比较好想#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<utility>#include<vector>#define LL原创 2016-07-18 22:52:26 · 271 阅读 · 0 评论 -
poj 1182 带权并查集模板
刚听带权并查集还以为是prim之类的。。。。结果好抽象(人太傻), 这篇博客http://blog.youkuaiyun.com/c0de4fun/article/details/7318642/ 把这题讲的很详细但没解释带权并查集到底怎嘛回事。 普通并查集每个集合的元素就是平等的他们之间没有任何关系除了在一个集合里 带权并查集 一个集合里的元素他们会存在某种约束某种联系也就是权重 这道题的集合里的关原创 2016-07-14 00:08:50 · 482 阅读 · 0 评论 -
poj-1584 判断凸包算法+极角排序+判断点在几何内外 模板
几何问题的重点 1 精度问题 有时答案一直错不是因为算法错误 而是精度没有处理好 2 代码能力 几何代码量较大 要不断练习熟能生巧,否则因为一个bug可能要查错很长时间#include<cstdio>#include<cmath>#include<stack>#include<algorithm>using namespace std;struct point{ double原创 2016-03-01 12:36:23 · 915 阅读 · 0 评论 -
poj-2240- Arbitrage bellmanfoyd 模板
主要用于判断负环#include<cstdio>#include<cstring>struct edge{ int x,y; double rate;}a[50000];int n,m,l;double v[1000],r;char s[100][500],c[500],b[500];int bellmanfoyd(int star){ for(int i=0;i原创 2016-01-10 22:04:37 · 388 阅读 · 0 评论 -
bzoj 1588 splay 模板
// 每插入一个点求它与树中的点的最小绝对值#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cstdlib>#include<string>#define maxi 0x73ffffff#define maxn 200005#define LL long longusin原创 2016-08-02 16:03:36 · 444 阅读 · 0 评论 -
hdoj 2389 二分图 Hopcroft-Carp 模板
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<queue>#define lson i<<1#define rson (i<<1)+1#define maxn 3005#define maxi 23333原创 2016-08-05 22:25:34 · 341 阅读 · 0 评论 -
ahu 395 快速矩阵幂初学 + 矩阵快速幂模板
#include <cstdio>#include <string>#include <cmath>#include <iostream>using namespace std;const long long M = 10003;const long long N = 3;long long t,b,c=0,f1,f2;struct Node //矩阵{ long lon原创 2015-09-20 11:21:23 · 360 阅读 · 0 评论 -
HDU 5120 Intersection 求两圆相交面积模板
这题容斥原理求覆盖面积就行#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#include<cmath>#define maxn 2200005#define LL long long#define lson i<<1#define rson (i<<1)+原创 2016-08-07 22:32:14 · 460 阅读 · 6 评论 -
poj 3225 线段树1,0互变 全变0全变1模板
区间更新 当这区间值相同时翻转记录清0因为此时值固定翻转无效了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<queue>#define lson i<<1#define rson (i<<1)+1#define maxn 70000*2us原创 2016-08-23 09:36:40 · 515 阅读 · 0 评论 -
HDU 3488 KM算法求最优匹配模板
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;//模板copy的一位外校美女学姐的。。love数组代表两个集合互相的权值 N代表点数 下标从0开始%%%%const int MAXN = 305;const int INF = 0x3f3f3f3f;in原创 2016-08-08 21:00:30 · 603 阅读 · 0 评论 -
hdoj 1588 矩阵快速幂 二分等比数列求和模板
等比数列求和可以二分#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define LL long longusing namespace std;LL mod,n,k,b;//快速幂struct ma{ LL m[4][4],row,col; ma() {原创 2016-08-18 23:04:26 · 376 阅读 · 0 评论 -
poj 1903 Jurassic Remains 中途相遇法
中途相遇法就是 2^n种状态 不全部枚举 先枚举2^*(n/2)个状态 再枚举后 n/2个 2^(n/2)种转态 再与前面 2^(n/2)个相匹配这样复杂度会降很多,二分的思想#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<map>using namespace std;map<原创 2016-08-18 23:00:09 · 594 阅读 · 0 评论 -
poj 1635 Subway tree systems 判断树的同构 树的最大最小表示法模板
想象成括号匹配,dfs把同优先级的括号由小到大按字典序排个序就是树的最小表示法了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>using namespace std;string a,b;string treeMinPress(原创 2016-08-18 22:56:29 · 694 阅读 · 0 评论 -
aoj-737-欧拉函数模板
性质: 欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数.对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数.欧拉函数的一些性质:1.欧拉函数是积性函数,但不是完全积性函数,即φ(mn)=φ(n)*φ(m)只在(n,m)=1时成立.2.对于一个正整数N的素数幂分解N=P1^q1*P2^q2*…*Pn^qn.φ(N)=N*(1-1/P1)(1-1/P2)…*(1-1/Pn).3.除了N原创 2016-05-13 15:09:51 · 457 阅读 · 0 评论 -
Hdu 4335 What is N? 欧拉函数降幂公式 + 循环节
a^n mod c= a^(n mod phi(c) + phi(c)) mod c (n >= phi(c) ) n! mod phi(c) = 0 n!的因子只需包含 phi(c) 因为 这题phi(mod) 不会太大 然后所有的n! mod phi(c) 都等于0 最后问题转化成有多少个nmod p = b; (a + b)^n = (a mod p + b mod p) ^ n (m原创 2016-08-28 16:16:52 · 1109 阅读 · 0 评论 -
hdoj 5839 Special Tetrahedron 叉积点积判断四点共面模板
枚举对角线求出所有等腰三角形 然后继续枚举 实际可有去除很多情况 然后去重就行了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define maxn 500#define LL long longusing namespace std;struct point{ LL x,y,z;原创 2016-08-16 22:26:46 · 528 阅读 · 0 评论 -
树状数组总结
单点更新区间查询 HDU 1166#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define LL long long#define maxn 60000using namespace std;int n;LL va,sum[maxn];char s[15];LL getSum(int原创 2016-07-26 21:35:24 · 318 阅读 · 0 评论 -
hdu-3068 Manacher算法模板
求最大长度回文串#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char s[210000],s1[220000];int ans[210000];int Manacher(){ int i; s[0] = '@'; for(i=1;s1[i]!='\0';i+原创 2016-04-13 07:56:04 · 386 阅读 · 0 评论 -
poj 3237 tree 树链剖分模板
代码能力不行玩这个有点坑啊。。。 区间更新 最大值最小值反转就行了//树链剖分#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define LL long long#define maxn 100005#define lson i<<1#define rson (i<<1)+1using原创 2016-07-22 23:51:35 · 323 阅读 · 0 评论 -
HDU-1711-kmp模板
#include<cstdio>int a[1100000],b[11000],n,m,next[11000],t;void getNext(){ next[1] = 0; int i=1,j=0; while(i<m) { if(j==0||b[i]==b[j]){ i++; j++; i原创 2016-04-04 17:58:03 · 340 阅读 · 0 评论 -
并查集模板
//并查集模板//11.11.2015 by blacktea >>>>>_<<<<<// this version isn't the best I will change it time by time#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<stack>#include<m原创 2015-11-11 21:00:09 · 990 阅读 · 0 评论 -
poj-3083-烦人复杂搜索+bfs,dfs模板
仅仅记录,本题无意义仅仅是烦人,当以后模板吧 ps:其实可以不写这么多的从终点沿墙往右走跟从起点沿墙往左走是一个意思的。。。AC后想通的。。。哎思路还是太窄。 求条件是否成立用dfs较好,求最优解bfs最好。#include<cstdio>#include<queue>using namespace std;char mp[50][50];struct node{ int x,y原创 2015-12-04 22:48:44 · 432 阅读 · 0 评论 -
poj-1265-area几何水题+pick定理模板
知识点 1.s= 边上点的数量/2+内点数量-1; 2.边上点的求法 am = gcd(x1-x2,y1-y2); 3.面积求法 凸包或有凹点都用叉积公式,不能化成一个个三角形求。#include<cmath>#include<cstring>#include<queue>#include<stack>#include<set>#in原创 2015-12-04 22:39:17 · 553 阅读 · 0 评论 -
POJ 1845-Sumdiv 数论 +快速幂&&筛素&&分解质因数&&求因数之和的模板
poj计划的第一个坎,非常经典的一道题在此记录一下以后总结 知识点: 1 (a+b)%c = (a%c+b%c)%c (a*b)%c = ((a%c)*(b%c))%c2 计算a^n 要用快速幂((logn)渣渣我都能迅速打出来)3 任何数都能分解成几个质因数相乘4 求一个数的所有因数之和 = (a^0+a^1+a^2+a^3+….a^n) * ( a1^0+a1^1+a1^原创 2015-11-20 23:35:55 · 1257 阅读 · 2 评论 -
扩展欧几里得模板 poj-C Looooops
poj撸了三个专题了虽然前几个很难但还可以自己想出来,到数论这都是坎,只能看题解慢慢学了。。。 总结下知识点 1 欧几里得定理 GCD(a,b) = GCD(b,a%b) 代码实现渣渣我都能毫不思考的打出来了。 2 ax+by = gcd(a,b)有解 同理可推出 ax+by=c有解的充要条件是c%gcd(a,b)=0; ax+by=gcd(a,b)通解为x = x0+b/gc原创 2015-11-22 22:36:25 · 532 阅读 · 0 评论 -
快速矩阵幂模板
fn = b*fn-1 +a*fn-2 +c#include <cstdio>#include <string>#include <cmath>#include <iostream>using namespace std;const long long M = 1000007;const long long N = 3;long long t,b,c,f1,f2;struct Nod原创 2015-09-20 11:18:22 · 349 阅读 · 0 评论 -
SPFA模板
int used[Maxn],outqueue[Maxn],head[Maxn],low[Maxn],n,m;struct Edge{ int to,w,next;}edge[Maxm];bool SPFA (int start){ queue a; used[start] = 1; low[start] = 0; a.push(sta原创 2015-09-05 12:53:44 · 298 阅读 · 0 评论 -
二分模板
int binsearch(int *t,int k,int n){//t为数组,k是要查找的数,n为长度,此为升序 int low = 1,high = n,mid; while(low<=high) { mid = (low+high)/2; if(k == t[mid]) return mid; else原创 2015-09-05 12:55:00 · 310 阅读 · 0 评论 -
线段树模板
#include <stdio.h>#include <math.h>const int MAXNODE = 2097152;const int MAX = 1000003;struct NODE{ int value; // 结点对应区间的权值 int left,right; // 区间 [left,right]}node[MAXNODE];int f原创 2015-08-04 20:17:05 · 448 阅读 · 0 评论 -
floyd 模板
for (int k=0; k<n; ++k) { for (int i=0; i<n; ++i) { for (int j=0; j<n; ++j) { /* 实际中为防止溢出,往往需要选判断 dist[i][k]和dist[k][j 都不是Inf ,只要一个是Inf,那么就肯定不必更新。 */原创 2015-08-31 08:51:07 · 367 阅读 · 0 评论 -
简单背包问题模板
#include<iostream>#define GOODNUM 5using namespace std;int main(){ int good[GOODNUM][2]={{4,6},{5,2},{6,3},{7,7},{8,5}};//good[i][0]:size||good[i][1]:value int i,j,size,weight; int v[GOO原创 2015-07-29 18:48:16 · 586 阅读 · 0 评论