zoukankan      html  css  js  c++  java
  • 好用的模板(不断增补中)

    好用的模板……有须要的拿去

    在使用中如发现bug欢迎留言指出

    1、打codeforces的比赛的时候是不是像我一样感觉时间不够用,恨不得多长几仅仅手打代码?事实上看看神犇的代码会发现,他们为节省时间都是直接在编译器的缺省值里打一堆头文件,另一些奇妙的#define……balabala的,我把自己打cf经常使用的头文件另一些经常使用的define,以及高速读入搞成模板放上来

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<deque>
    #include<set>
    #include<map>
    #include<ctime>
    #define LL long long
    #define inf 0x7ffffff
    #define pa pair<int,int>
    #define pi 3.1415926535897932384626433832795028841971
    using namespace std;
    inline LL read()
    {
        LL x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    int main()
    {
    }
    

    2、高精度实在是让人头疼的东西,每次写加减乘除读入输出都好麻烦……眼下写了非负高精整数的加减乘minmax……放模板

    #define mx 100//高精位数
    struct gaojing{
         int len;
         int a[mx+10];
    };//定义高精度非负数类型
    inline void set0(gaojing &s)//高精清零
    {
        s.len=1;
        for (int i=1;i<=mx+5;i++)s.a[i]=0;
    }
    inline void inputn(gaojing &a)//高精输入
    {  
    	set0(a);
        char ch=getchar();
        while (ch<'0'||ch>'9')ch=getchar();  
        while (ch>='0'&&ch<='9')  
        {  
            a.a[a.len++]=ch-'0';
            ch=getchar();
        }
        a.len--;  
        int change[mx+15];
        for (int i=1;i<=a.len;i++)  
          change[i]=a.a[i];  
        for (int i=1;i<=a.len;i++)  
          a.a[i]=change[a.len-i+1];
        while (a.a[a.len]==0)a.len--;
    }  
    inline void put(gaojing a)//高精输出并换行
    {    
        for (int i=a.len;i>=1;i--)printf("%d",a.a[i]);
        printf("
    ");
    }
    inline int cmp(const gaojing &a,const gaojing &b)//比較:a<b:1  a>b:-1  a==b:0  
    {  
        if (a.len!=b.len)  
        {  
            if (a.len<b.len)return 1;  
            else return -1;  
        }  
        for (int i=a.len;i>=1;i--)
          if(a.a[i]<b.a[i])return 1;
          else if (a.a[i]>b.a[i])return -1;
        return 0;
    }  
    inline gaojing max(const gaojing &a,const gaojing &b)//高精度max 
    {  
        int opr=cmp(a,b);
        if (opr==1)return b;
        else return a;
    }
    inline gaojing min(const gaojing &a,const gaojing &b)//高精度min
    {
    	int opr=cmp(a,b);
    	if (opr==1)return a;
    	else return b;
    } 
    inline gaojing operator + (const gaojing &a,const gaojing &b)//高精度加法
    {  
        gaojing c;set0(c);  
        int maxlen=max(a.len,b.len);      
        for (int i=1;i<=maxlen;i++)      
        {      
            c.a[i]=c.a[i]+a.a[i]+b.a[i];      
            if (c.a[i]>=10)      
            {      
                c.a[i+1]+=c.a[i]/10;    
                c.a[i]%=10;    
            }    
        }      
        c.len=maxlen+4;      
        while (!c.a[c.len]&&c.len>1) c.len--;    
        return c;
    }
    inline gaojing operator - (const gaojing &a,const gaojing &b)//高精度减法,需保证a>b
    {  
    	gaojing c;set0(c);
    	gaojing d;d=a;
        for (int i=1;i<=b.len;i++)  
          {  
            c.a[i]=d.a[i]-b.a[i];  
            if (c.a[i]<0)  
            {  
                c.a[i]+=10;  
                int now=i+1;  
                while (!d.a[now])  
                {  
                    d.a[now]=9;  
                    now++;  
                }  
                d.a[now]--;  
            }  
          }
        for (int i=b.len+1;i<=d.len;i++)c.a[i]=d.a[i];  
        c.len=d.len;  
        while (c.a[c.len]==0&&c.len>1)c.len--;
        return c;
    }  
    inline gaojing operator * (const gaojing &a,const gaojing &b)//高精度乘法
    {  
        gaojing c;set0(c);    
        for(int i=1;i<=a.len;i++)    
          for (int j=1;j<=b.len;j++)    
            c.a[i+j-1]+=a.a[i]*b.a[j];    
        int mxlen=a.len+b.len+5;  
        for (int i=1;i<=mxlen;i++)    
          {    
            c.a[i+1]+=c.a[i]/10;    
            c.a[i]%=10;    
          }    
        while (c.a[mxlen]==0)mxlen--;    
        c.len=mxlen;    
        return c;
    }

    不断更新中

  • 相关阅读:
    SVN菜单说明
    Jabber Software:Jabber-NET、agsXMPP与Wilefire[转]
    nuget的使用总结
    SET QUOTED_IDENTIFIER ON
    SET ANSI_NULLS ON
    SQL Server性能杀手
    How to open .ccproj in VS2010?
    Bios里,把SATA Mode Selection改为AHCI无法启动
    [转]内嵌WORD/OFFICE的WINFORM程序——DSOFRAMER使用小结
    使用EF连接现有数据库
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5083509.html
Copyright © 2011-2022 走看看