【模板】各模板收集

·本文模板顺序按照难度严格单调递增·

·dalao们可以直接从后面开始看·

不过dalao们也不会看我的博客吧qwq

(由于本人写模板的时间相距较大,所以码风可能有一些微小变化……[比如很早之前还不会读优什么的qwq] )

题面及样例参照洛谷同名题目

[最近更新:2019.02.17 08:31 更新至模板堆]

【模板】快速排序

#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main()
{
    int n;scanf("%d",&n);
    for (int i=1;i<=n;i++)
    scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    for (int i=1;i<=n;i++)
    printf("%d ",a[i]);
    return 0;
}

【模板】并查集

#include<bits/stdc++.h>
using namespace std;

int n,m;
int x,y,z;
int f[10005];

int find(int x)
{
    if (f[x]==x) return x;
    return f[x]=find(f[x]);
}

template<class T>inline void read(T &res)
{
    static char ch;T flag=1;
    while((ch=getchar())<'0'||ch>'9')if(ch=='-')flag=-1;res=ch-48;
    while((ch=getchar())>='0'&&ch<='9')res=res*10+ch-48;res*=flag;
}

int main()
{
    read(n);read(m);
    for (int i=1;i<=n;i++) f[i]=i;
    for (int i=1;i<=m;i++)
    {
        read(z);read(x);read(y);
        if (z==1) f[find(x)]=find(y);
        if (z==2) find(x)==find(y) ? printf("Y\n"):printf("N\n");
    }
    return 0;
}

【模板】快速幂 取余运算

#include<bits/stdc++.h>
using namespace std;
long long b,p,k,a;
long long f(long long p)
{
    if(p==0) return 1; 
    long long num=f(p/2)%k;
    num=(num*num)%k;
    if(p%2==1)
    num=(num*b)%k;
    return num%k;
}
int main()
{
    scanf("%lld%lld%lld",&b,&p,&k);
    printf("%lld^%lld mod %lld=",b,p,k);
    if(p==0)
    {
        printf("%d",1%k);
        return 0;
    }
    b%=k;
    printf("%lld",f(p));
    return 0;
}

【模板】线性筛素数

awsl,我居然还没打过这题,马上去打qwq

【模板】堆

#include<bits/stdc++.h>
using namespace std;
std::priority_queue<int,vector<int>,greater<int> > q;
int n,x,num;
int main()
{
   scanf("%d",&n);
   for (int i=1;i<=n;i++)
   {
       scanf("%d",&x);
       if (x==1)
       {
           scanf("%d",&num);
           q.push(num);
       }
       if (x==2) printf("%d\n",q.top());
       if (x==3) q.pop();
   }
   return 0;
}

猜你喜欢

转载自www.cnblogs.com/tqr06/p/10390093.html
今日推荐