zoukankan      html  css  js  c++  java
  • 杂七杂八的一些板子

    高精乘低精

    void mult(int x,int a[])
    {
        int k=0;
        for(int i=1;i<=a[0];i++)
        {
            int tmp=a[i]*x+k;
            a[i]=tmp%10;
            k=tmp/10;
        }
        while(k)a[++a[0]]=k%10,k/=10;
    }

    线性筛素数

    void getpri()
    {
        for(int i=2;i<=10000;i++)
        {
            if(!vis[i])pri[++tot]=i;
            for(int j=1;j<=tot;j++)
            {
                if(i*pri[j]>10000)break;
                vis[i*pri[j]]=1;
                if(i%pri[j]==0)break;
            }
        }
    }

    比较高效的分解质因数

    void getprime()
    {
        for(int i=2;i<=2*n;i++)
        {
            if(!vis[i])pri[++tot]=i,res[i]=tot;
            for(int j=1;j<=tot;j++)
            {
                if(i*pri[j]>2*n)break;
                vis[i*pri[j]]=1;res[i*pri[j]]=j;
                if(i%pri[j]==0)break;
            }
        }
    }
    void divi(int x,int val)
    {
        while(x!=1)bu[res[x]]+=val,x/=pri[res[x]];    
    }

    高精减

    void Minus(int a[],int b[])
    {
        int j=1,x=0;
        while(j<=a[0]||j<=b[0])
        {
            if(a[j]<b[j])
            {
                a[j]+=10;
                a[j+1]--;
            }
            ans[j]=a[j]-b[j];
            j++;
        }
        int k=j;
        while(ans[k]==0&&k>1)k--;
        ans[0]=k;
    }

    高精加

    void add(int m[],int n[])
    {
        int j=1,x=0;
        while(j<=m[0]||j<=n[0])
        {
            c[j]=m[j]+n[j]+x;
            x=c[j]/10;
            c[j]%=10;
            j++;
        }
        c[j]=x;
        if(c[j]==0)j--;
        for(int i=j;i>=1;i--)
        cout<<c[i];
    }

    高精乘

    void dx(int m[],int n[])
    {
        for(int i=1;i<=m[0];i++)
        {
            int x=0;
            for(int j=1;j<=n[0];j++)
            {
                c[i+j-1]=m[i]*n[j]+x+c[i+j-1];
                x=c[i+j-1]/10;
                c[i+j-1]%=10;
            }
            c[i+n[0]]=x;
        }
        c[0]=m[0]+n[0];
        while(c[c[0]]==0&&c[0]>1)c[0]--;
        for(int i=c[0];i>=1;i--)cout<<c[i];
    }

    超级快读

    const int L=1<<20|1;
    char buffer[L],*S,*T;
    #define getchar() ((S==T&&(T=(S=buffer)+fread(buffer,1,L,stdin),S==T))?EOF:*S++)

     cin优化(消费ooo

    #include <iostream>
    int main() 
    {
        std::ios::sync_with_stdio(false);
        std::cin.tie(0);
        return 0;
    }

     线性筛约数个数($d(x)$为积性函数所以能线筛)

    void cnt_fact()
    {
        vis[1]=d[1]=1;
        for(int i=2;i<=M;i++)
        {
            if(!vis[i])pr[++cnt]=i,d[i]=2,a[i]=1;// i is a prime number.
            for(int j=1;j<=cnt&&i*pr[j]<=M;j++)
            {
                vis[i*pr[j]]=1;
                if(i%pr[j])d[i*pr[j]]=d[i]*d[pr[j]],a[i*pr[j]]=1;//If i and pr[j] are coprime
                else// If they are not coprime,i must include at least one pr[j].             
                {
                    d[i*pr[j]]=d[i]/(a[i]+1)*(a[i]+2);//And pr[j] should be the minimum prime factor of i. 
                    a[i*pr[j]]=a[i]+1;break;
                }
            }
        }
    }

     线性筛莫比乌斯函数

    void ini()
    {
        mu[1]=1;
        for(int i=2;i<=M-5;i++)
        {
            if(!vis[i])pr[++tot]=i,mu[i]=-1;
            for(int j=1;j<=tot&&i*pr[j]<=M-5;j++)
            {
                vis[i*pr[j]]=1;
                if(i%pr[j])mu[i*pr[j]]=-mu[i];
                else
                {
                    mu[i*pr[j]]=0;
                    break;
                }
            }
        }
    }

     手写堆

    #include<cstdio>
    #include<cstring>
    using namespace std;
    int const N=1e5+5;
    inline void swap(int &x,int &y){
        x^=y^=x^=y;
        return ;
    }
    struct node{                    //大根堆
        int heap[N],n;
        inline void clear(){        //清空
            n=0;
            return ;
        }
        inline bool empty(){        //判断是否为空
            return !n;
        }
        inline int size(){            //返回元素个数
            return n;
        }
        inline void up(int x){        //向上调整
            while(x^1)
                if(heap[x]>heap[x>>1])swap(heap[x],heap[x>>1]),x>>=1;
                else return ;
        }
        inline void down(int x){    //向下调整
            int s=x<<1;
            while(s<=n){
                if(s<n && heap[s]<heap[s|1])s|=1;
                if(heap[s]>heap[x]){swap(heap[s],heap[x]);x=s,s<<=1;}
                else return ;
            }
        }
        inline void push(int x){    //插入元素x
            heap[++n]=x;
            up(n);
            return ;
        }
        inline int top(){return heap[1];}                        //返回堆中的最大值
        inline void pop(){heap[1]=heap[n--];down(1);return ;}   //删除堆顶
        inline void erase(int x){                                //删除下标为x的节点
            heap[x]=heap[n--];
            up(x),down(x);
            return ;
        }
        inline int* begin(){                //返回堆中第一个元素的指针(实在不会搞迭代器……)
            return &heap[1];
        }
        inline int* end(){                    //返回堆的尾部边界
            return &heap[n+1];
        }
        inline int &operator [] (int x){
            return heap[x];
        }
    }q;
    int main(){
        //freopen("1.in","r",stdin);
        //freopen("1.out","w",stdout);
        int t;
        scanf("%d",&t);
        for(register int i=1;i<=t;++i){
            int z;
            scanf("%d",&z);
            q.push(z);
        }
        for(register int* i=q.begin();i!=q.end();++i)    //遍历1
            printf("%d ",*i);
        puts("");
        for(register int i=1;i<=q.size();++i)            //遍历2
            printf("%d ",q[i]);
        puts("");
        while(!q.empty()){                                //从大到小输出
            printf("%d ",q.top());
            q.pop();
        }
        puts("");
        return 0;
    }
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 数字黑洞
    Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯
  • 原文地址:https://www.cnblogs.com/Rorschach-XR/p/11222653.html
Copyright © 2011-2022 走看看