21xrx.com
2024-11-05 20:44:42 Tuesday
登录
文章检索 我的文章 写文章
C++编程模板
2023-07-07 08:54:44 深夜i     --     --
C++程序设计模板 C++模板编程 C++类模板 C++函数模板 C++元编程模板

C++是一种高效、灵活、可靠的编程语言,被广泛应用于各种平台和领域之中。在实际的编程工作当中,我们通常会面临着各种各样的问题,需要使用一些模板来解决这些问题。

以下是一些常用的C++编程模板:

1.快速幂模板:


long long pow_mod(long long a,long long n,long long mod)

{

  long long ans=1;

  while(n)

  {

    if(n&1) ans=(ans*a)%mod;

    a=(a*a)%mod;

    n>>=1;

  }

  return ans;

}

2.最小生成树:


int ans=0;

int union_p[maxn];

int find(int x)

{

  return x==union_p[x]?x:union_p[x]=find(union_p[x]);

}

void kruskal()

{

  for(int i=1; i<=n; i++)

  {

    union_p[i]=i;

  }

  sort(e+1,e+m+1);

  for(int i=1; i<=m; i++)

  {

    int x=e[i].u,y=e[i].v;

    int fx=find(x),fy=find(y);

    if(fx==fy) continue;

    union_p[fx]=fy;

    ans+=e[i].w;

  }

}

3.最短路:


struct node

{

  int f,g,x;

  bool operator<(node a) const

  

    return f>a.f;

  

};

priority_queue<node> Q;

int dis[maxn];

void dijkstra(int s)

{

  memset(dis,127,sizeof(dis));

  dis[s]=0;

  Q.push((node) 0);

  while(!Q.empty())

  {

    int x=Q.top().x;

    int fx=Q.top().f;

    int gx=Q.top().g;

    Q.pop();

    if(fx!=dis[x]||gx>k) continue;

    for(int i=head[x]; ~i; i=edge[i].next)

    {

      int y=edge[i].v;

      if(dis[y]>dis[x]+edge[i].w)

      {

        dis[y]=dis[x]+edge[i].w;

        Q.push((node) {dis[y],gx+1,y});

      }

    }

  }

}

4.二分答案:


bool check(int x)

  return true; //判断条件

int solve()

{

  int l=1,r=1000000000;

  while(l<r)

  {

    int mid=l+((r-l)>>1);

    if(check(mid))

    

      r=mid;

     else

    {

      l=mid+1;

    }

  }

  return l; //最终结果

}

5.并查集:


int union_p[maxn];

int size[maxn]; //size记录集合大小

int find(int x)

{

  return x==union_p[x]?x:union_p[x]=find(union_p[x]);

}

void merge(int x,int y)

{

  int fx=find(x),fy=find(y);

  if(fx!=fy)

  {

    if(size[fx]<size[fy]) swap(fx,fy);

    size[fx]+=size[fy];

    union_p[fy]=fx;

  }

}

以上是一些常用的C++编程模板,它们在实际的编程中都有着很重要的应用价值。如果你对C++编程感兴趣,希望能够在编程方面取得更好的成果,不妨深入学习这些模板,相信一定能帮助你更好地解决问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复