·本文模板顺序按照难度严格单调递增·
·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;
}