码迷,mamicode.com
首页 > 其他好文 > 详细

常用模板汇总

时间:2019-10-13 18:39:49      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:ret   argv   bool   read   lse   +=   整数   const   jin   

二分排序

int A(int l,int r)
{
    int mid=a[(l+r)/2];
    int i=l,j=r;
    while(i<=j)
    {
        while(a[i]<mid&&i<=r)
            i++;
        while(a[j]>mid&&j>=l)
            j--;
        if(i<=j)
        {
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
        if(l<=j)
            A(l,j);
        if(i<=r)
            A(i,r);
    return 0;
}

欧拉筛

bool isprime[10005];
int prime[5005];
int top=1;

memset(isprime,1,sizeof(isprime));
for(int i=2;i<10000;i++)
{
    if(isprime[i])
        prime[top++]=i;
    for(int j=1;j<top;j++)
    {
        if(i*prime[j]>10000)
            break;
        isprime[i*prime[j]]=0;
        if(i%prime[j]==0)
            break;
    }
}

高精加

string s,sx;
int a[505],b[505],ans[505];

int main(int argc, char const *argv[])
{
    cin>>s>>sx;
    memset(a,sizeof(a),0);
    memset(b,sizeof(b),0);
    for(int i=0,pos=s.size();i<s.size();i++,pos--)
        a[pos]=s[i]-'0';
    for(int i=0,pos=sx.size();i<sx.size();i++,pos--)
        b[pos]=sx[i]-'0';
    int jinwei=0,len=max(s.size(),sx.size());
    for(int i=1;i<=len;i++)
    {
        ans[i]=(a[i]+b[i]+jinwei)%10;
        jinwei=(a[i]+b[i]+jinwei)/10;
    }
    if(jinwei)
    {
        cout<<jinwei;
        for(int i=len;i;i--)
            cout<<ans[i];
    }
    else
        for(int i=len;i;i--)
            cout<<ans[i];
    return 0;
}

快速读入

整数

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

实数(注意输入必须要包含小数点)

inline void read(double &x){
    x=0;int f=1;double y=1.0;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x*10)+(ch^48);
        ch=getchar();
    }
    ch=getchar();
    while(ch>='0'&& ch<='9'){
        x+=(y/=10)*(ch^48);
        ch=getchar();
    }
    x*=f;
}

常用模板汇总

标签:ret   argv   bool   read   lse   +=   整数   const   jin   

原文地址:https://www.cnblogs.com/wjsoj/p/11667452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!