• 常用模板总结


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

    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
    ",qry(l,r));
    	}
    }
    
  • 相关阅读:
    最短路径BellmanFord , Dijsktra
    minhash
    eclipse 中使用tomcat
    http 服务
    MongoDB小记
    java post 请求
    hadoop拾遗(五)---- mapreduce 输出到多个文件 / 文件夹
    weka数据挖掘拾遗(二)---- 特征选择(IG、chi-square)
    weka数据挖掘拾遗(一)---- 生成Arff格式文件
    基于SimHash的微博去重
  • 原文地址:https://www.cnblogs.com/lcez56jsy/p/12725415.html
Copyright © 2020-2023  润新知