自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Eason的博客

ML,DL,NLP,KG

  • 博客(27)
  • 收藏
  • 关注

原创 topo排序(入度法)(可判断topo排序是否唯一)

int G[maxn][maxn],indegree[maxn],topo[maxn],n,m; //topo[]可打印topo排序void Addedge(int u,int v) //添加有向边u->v{ G[u][v]=1; indegree[v]++; //终点入度+1}void init() //初始化边和入度{ memset(

2015-08-20 10:38:33 1496

原创 Lucas大组合数模板

typedef long long ll;struct Lucas { ll n, m, p; ll qPow (ll a, ll k) { ll ans = 1; while (k) { if (k&1) ans = (ans * a) % p; a = (a * a) % p; k /= 2; } return ans; } ll C (ll a, ll b) { if (a a - b)

2015-08-20 10:32:11 1589

原创 RMQ模板

int d[50000][40];vector A;void RMQ_init(const vector & A){ //RMQ 初始化 int n=A.size(); for(int i=0;i<n;i++)d[i][0]=A[i]; for(int j=1;(1<<j)<=n;j++) for(int i=0;i+(1<<j)-1<n;i+

2015-08-20 10:28:58 1849

原创 矩阵快速幂

#define LL long longint mod = 1000000007;int n; //矩阵宽度const int maxn=100; //maxn不要超过160struct Mat //矩阵结构体{ LL mat[maxn][maxn];};Mat operator * (Mat a, Mat b) //2个边长为n的正方形矩阵乘法 a*b mod p

2015-08-20 10:27:14 1790

原创 网络流(dinic算法)

const int maxn=50050;const int INF=0x7fffffff;#define M 11#define LL long longstruct Edge{ int from,to,cap,flow; Edge(int u,int v,int c,int f):from(u),to(v),cap(c),flow(f){}};struct Dinic

2015-08-20 10:13:03 1931

原创 整数划分模板

//模板long long dp[1005][1005];long long f(int n,int m){ //返回和为n,每个数不超过m的划分个数 n,m都不能为0 if(dp[n][m]) return dp[n][m]; if(n==1||m==1) return dp[n][m]=1; if(m>n) return dp

2015-08-20 10:08:11 1915

原创 KMP及相关算法

int next[1000070]; //next 数组int ans;void getNext(char *p,int *next) //构造next数组{ int j=0,k=-1; next[0]=-1; int len=strlen(p); while(j<len) { if(k==-1||p[j]==p[k])

2015-08-20 10:00:09 1794

原创 AC自动机

#include#include#include#include#includeusing namespace std;const int maxnode=1000007;const int SIGMA_SIZE=26; //若字符串可能出现所有字符,则要将该值改为128,并且将idx函数中“ -‘a’ "去掉//给定多个模板,一个文本,能够找出模板在文本中的位置与附加信息va

2015-08-20 09:48:37 1840

原创 树状数组

const int maxn=10010; //树状数组可能的最大长度struct BIT { //设树状数组为A[],下标从1开始 int N; int C[maxn]; //辅助数组 void init(int BIT_size) { //初始化,BIT_size 为树状数组的长度 N=BIT_size; memset(C,0,s

2015-08-19 17:03:41 1840

原创 Hash

const int hashsize = 1000003;const int maxstate = 1000000;typedef int State;int head[hashsize],Next[maxstate];State st[maxstate];//需要定义一个状态数组int id=0;//状态数组的下标,访问状态void init(){memset(head,0,size

2015-08-19 16:55:03 1885

原创 K-d Tree 模板

typedef long long LL;typedef pair PII;typedef pair pii;const int maxn = 1000005; //点的数量const int maxD = 2; //维数,根据题目维数修改此处const int maxM = 12;const LL INF = 4611686018427387903LL;int now;s

2015-08-19 16:51:19 2247

原创 字典树模板

const int maxnode=100003;const int sigma_size=26; //字符集大小,注意idx函数也要随着修改struct Trie{ int ch[maxnode][sigma_size]; int val[maxnode]; int sz; void init() { sz=1;memset(ch[0],0,sizeof(c

2015-08-19 16:48:54 2089

原创 二维线段树(单点更新)

#include #include #include #include #include #include #include using namespace std;const int INF=1<<30;const int maxn=2000+10;struct INtervalTree2D{ //2维线段树x轴y轴的下标均从1开始 int Max[maxn][maxn

2015-08-19 16:45:51 1830

原创 线段树(求矩形并,交,并减交的面积)

# define N 100100int e; //记录横坐标个数,注意主函数里不要有同名变量struct node1{ double x,y1,y2; int f;} line[N*2];struct node2{ double rf,lf,cnt,incnt; //求矩形交可以没有cnt,求矩形并可以没有incnt int l,r,c;} tr

2015-08-19 16:43:39 1997

原创 线段树(求矩形周长)

# define N 5005int e;struct node1 { int x,y1,y2; int f;} line[2*N];struct node2 { int l,r; int lf,rf;/*左右区间所对应的y值*/ int cnt;/*节点上线段的测度*/ int count;/*节点被线段完全覆盖的次数*/ int

2015-08-19 16:34:48 2080

转载 几个基础数位DP (hdu 2089,hdu 3555 ,uestc 1307 windy 数)

HDU 2089 不要62http://acm.hdu.edu.cn/showproblem.php?pid=2089不能出现4,或者相邻的62,这题可以暴力打表解决具体的在代码里都有解释 #include  #include  #include  #include  #include  #include  #define N 55  #define inf

2015-08-19 16:30:09 1829

原创 多重背包 (n种物品,每种m个)

const int MAXV = 1 << 9;int d[MAXV],v,w;int m,n,V; //背包大小为V,n种物品,每种物品m个void ZeroOnePack( int* f, int C, int W) { //01背包 int v; for( v = V; v >= C; v --) f[v] = max( f[v], f[v - C]

2015-08-19 16:29:10 3494

原创 二分图-最大匹配,最小路径覆盖,最小点覆盖(KM算法)

正式的定义,网上一大把,但他们的作用是让人看不懂……二分图:把点分成两个集合X,Y,使得图的边的两个端点总是分别落在X和Y上,不会有X中的点连向X中的点,不会有Y中的点连向Y中的点匹配:实质上是二分图中的一个边集,边集中出现的点不会重合,比如有a-b了,就不会有a-c了,要是有了a就重合了最大匹配:这个边集的数目最大的那个匹配匈牙利算法——增广路:一条在X和

2015-08-19 16:26:05 2926

原创 求无向图的 边-双连通分量

/*去掉桥,其余的连通分支就是边双连通分支了。一个有桥的连通图要变成边双连通图的话,把双连通子图收缩为一个点,形成一颗树。通过遍历所有桥来统计缩点树的各结点度数,需要加的边为(leaf+1)/2(leaf 为叶子结点个数)*/const int MAXN = 5010;//点数const int MAXM = 20010;//边数,因为是无向图,所以这个值要*2struct Edge {

2015-08-19 16:20:28 943

原创 求无向图割顶,桥,删除点后增加的连通块数

const int MAXN=10010,MAXM=100010;//点的下标切记转换成由1~nstruct Edge{ int to,next; bool cut; //是否为桥的标记*******}edge[MAXM]; //边数组/* 遍历点u的临接边 for(int i=head[u];i!=-1;i=edge[i].next) { edg

2015-08-19 16:16:03 2315

原创 二维几何模板(刘汝佳)

#include #include #include #include #include #include #include #include using namespace std;const double PI=acos(0)*2;struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(

2015-08-19 16:14:01 3652

原创 求半平面交的点集

///////////////////////////////////////////////////////////////////////////////////////////////struct Line { //定义直线类型 Point P; // 直线上任意一点 Vector v; // 方向向量 double ang; // 极角,即从

2015-08-19 16:12:11 2062

原创 求三角形外心,两圆相交面积

三点求圆心坐标(三角形外心)//过三点求圆心坐标Point waixin(Point a,Point b,Point c) { double a1 = b.x - a.x, b1 = b.y - a.y, c1 = (a1*a1 + b1*b1)/2; double a2 = c.x - a.x, b2 = c.y - a.y, c2 = (a2*a2 + b2*b2)/2;

2015-08-19 16:09:33 2533

原创 凸包,旋转卡壳模板

//////////////////////凸包/////////////////////////// int ConvexHull(Point *p,int n,Point* ch) { //返回凸包顶点数,凸包顶点存在ch中 sort(p,p+n); int m=0; for(int i=0; i1&&Cross(ch[m-1]-ch[m-2],p[i]-ch[m-2

2015-08-19 15:59:17 2166

原创 2维fenwick树

const int MAXH=107,MAXW=107;struct Fenwick { int W,H; int mat[MAXH][MAXW]; void init(int w,int h){ //初始化矩阵 memset(mat,0,sizeof(mat)); W=w,H=h; } int lowbit(int

2015-08-19 15:53:36 2011

原创 WEB开发笔记

集合:List:(列表)  add  get(index)  返回下标所对应元素     iterator()    remove() 删除集合元素Iterator it=list.iterator();     //迭代器遍历while(it.hasNext()){     System.out.print(it.n

2015-08-19 15:51:43 1848

原创 SPFA算法

const int maxn=1007;const int INF=0x7fffffff;struct Edge { int from ,to, dist; Edge(int u,int v,int d):from(u),to(v),dist(d) {}};struct SPFA { int n,m; vector edges; vector G[m

2015-08-19 15:46:23 1815

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除