常用模板总结

由于博主太菜,于是产生了这个偷懒用的东西这篇博客
毒瘤版快读

int read()
{
   char ch=getchar();
   int x=0;bool f=0;
   while(ch<'0'||ch>'9')
   {
      if(ch=='-') f=1;
      ch=getchar();
   }
   while(ch>='0'&&ch<='9')
   {
       x=(x<<3)+(x<<1)+(ch^48);
       ch=getchar();
   }
   return f?-x:x;
}

\(Dij\)

inline void dij(int s)
{
	for(int i=1;i<=n;i++)
	 dis[i]=2147483645;
	dis[s]=0;
	q.push(make_pair(0,s));
	while(!q.empty())
	{
		int now=q.top().second;
		q.pop();
		if(vis[now])continue;
		vis[now]=1;
		for(int e=head[now];e;e=edge[e].nxt)
		{
			int v=edge[e].to;
			if(dis[now]+edge[e].dis<dis[v])
			{
				dis[v]=dis[now]+edge[e].dis;
				q.push(make_pair(dis[v],v));
			}
		}
	}
}

\(spfa\)

void spfa()
{  	for(int i=1;i<=n;i++)
	 dis[i]=inf;
	dis[s]=0;
	vis[s]=1;
	q.push(s);
	while(!q.empty())
	{int u=q.front();
	  q.pop();
	  vis[u]=0;
	  for(int i=head[u];i;i=edge[i].next)
	  { int v=edge[i].to;
	  	if(dis[v]>dis[u]+edge[i].dis)
	  	{ dis[v]=dis[u]+edge[i].dis;
	  	  if(vis[v]==0)
		  {q.push(v);
	  	  vis[v]=1;
		  }
		}
	  }
	}
}

\(tarjan\)

void tarjan(int u)
{
	tim++;
	dfn[u]=tim;
	low[u]=dfn[u];
	sta[++top]=u;
	vis[u]=1;
	for(int e=head[u];e;e=edge[e].nxt)
	{
		int v=edge[e].to;
		if(!dfn[v])
		{
			tarjan(v);low[u]=min(low[u],low[v]);
		}
		else if(vis[v])
		  low[u]=min(low[u],dfn[v]);
	}
	if(low[u]==dfn[u])
	{
		num++;
		do
		{ 
		 int v=sta[top];
			vis[v]=0;
			col[v]=num;
			nd[num]+=a[v];
			top--;
		}while(sta[top+1]!=u);
	}
}

\(矩阵乘法\)

void f()
{
	for(int i=1;i<=n;i++)
	 for(int j=1;j<=n;j++)
	  hp[i][j]=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			for(int k=1;k<=n;k++)
				hp[i][j]+=a[i][k]*b[k][j],hp[i][j]=(hp[i][j]+mod)%mod;
	for(int i=1;i<=n;i++)
          for(int j=1;j<=n;j++)
            a[i][j]=hp[i][j]
}

被遗忘的ST表

int qry(int l,int r)
{
	int qwq=log((double)(r-l+1))/log(2.0);
	return max(st[l][qwq],st[r-(1<<qwq)+1][qwq]);
}
void st()
{
        for(int i=1;(1<<i)<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			st[j][i]=max(st[j][i-1],st[j+(1<<(i-1))][i-1]);
		}
	}
	while(m--)
	{
		int l=read(),r=read();
		printf("%d\n",qry(l,r));
	}
}
posted @ 2020-04-18 18:24  千载煜  阅读(126)  评论(0编辑  收藏  举报