• 各种模板(part 1)


    GCD:

    1 int gcd(int a,int b)
    2 {
    3     return b==0?a:gcd(b,a%b);
    4 }
    View Code

    快速幂:

     1 void work(int x,int y)  //x^y
     2 {
     3     int ans=1;
     4     while(y!=0)
     5     {
     6         if(y%2==1)
     7             ans=ans*x;
     8         y=y/2;
     9         x=x*x;
    10     }
    11 }
    View Code

    归并排序:

     1 void work(int l,int r)
     2 {
     3     int i,j,tmp,mid;
     4     if(l+1<r)
     5     {
     6         mid=(l+r)/2;
     7         tmp=l;
     8         work(l,mid-1);
     9         work(mid,r);
    10         for(i=l,j=mid;i<mid&&j<=r;)
    11         {
    12             if(a[i]>a[j])
    13                 c[tmp++]=a[j++];
    14             else
    15                 c[tmp++]=a[i++];
    16         }
    17         if(j<=r)
    18             for(;j<=r;j++)
    19                 c[tmp++]=a[j];
    20         else
    21             for(;i<mid;i++)
    22                 a[tmp++]=a[i];
    23         for(i=l;i<=r;i++)
    24             a[i]=c[i];
    25     }
    26     else
    27     {
    28         if(l+1==r)
    29         {
    30             if(a[l]>a[r])
    31             {
    32                 sawp(a[l],a[r]);
    33             }
    34         }
    35     }
    36 }
    View Code

    二分:

     1 int find(int l;int r)
     2 {
     3     int mid=(l+r)/2;
     4     while(l+1<r)
     5     {
     6         if(mid==条件) return mid;
     7         if(mid<条件) l=mid;
     8         if(mid>条件) r=mid;
     9     }
    10     if(l==条件) return l;
    11     if(r==条件) return r;
    12     return -1;//没有满足条件的
    13 }
    View Code

    静态链表:

     1 struct node    //静态链表
     2 {
     3     int v,n;
     4 }a[maxn];
     5 int top;
     6 void cha_ru(int x,int y)    //把y查到第x个元素后
     7 {
     8     top++;
     9     a[top].v=y;
    10     a[top].n=a[x].n;
    11     a[x].n=top;
    12 }
    13 void delet(int x)    //把x的下一个元素删除
    14 {
    15     a[x].n=a[a[x].n].n;
    16 }
    View Code

    栈:

    1 int q[maxn],top=0;
    2 void push(int x)
    3 {
    4     q[++top]=x;
    5 }
    6 int pop()
    7 {
    8     return q[top--];
    9 }
    View Code

    队列:

    1 int q[maxn],tail=0,head=0;
    2 void push(int x)
    3 {
    4     q[++tail]=x;
    5 }
    6 int pop()
    7 {
    8     return a[++head];
    9 }
    View Code

    二叉树:

     1 struct node //
     2 {
     3     int v;
     4     int lc,rc;
     5     int id;
     6     int pa;
     7 }a[maxn];
     8 int top=0;
     9 int head=0;
    10 void qian(int p) //前序遍历
    11 {
    12     if(p==0)
    13         return ;
    14     cout<<a[p].v;
    15     qian(a[p].lc);
    16     qian(a[p].rc);
    17 }
    18 void zhong(int p) //中序遍历
    19 {
    20     if(p==0)
    21         return ;
    22     zhong(a[p].lc);
    23     cout<<a[p].v;
    24     zhong(a[p].rc);
    25 }
    26 void hou(int p) //后序遍历
    27 {
    28     if(p==0)
    29         return ;
    30     hou(a[p].lc);
    31     hou(a[p].rc);
    32     cout<<a[p].v;
    33 }
    34 //树的数组储存
    35 //设有n各节点的树,操作t节点  根节点为1 到n
    36 t.father=t/2; //父亲
    37 t.lchild=2*t;    //左儿子
    38 t.rchild=2*t+1;    //右儿子
    39 t.lbrother=t-1;    //左兄弟
    40 t.rbrother=t+1;    //右兄弟
    View Code

    并查集:

     1 using namespace bing_cha_ji //并查集
     2 {
     3     int fa[maxn];
     4     for(int i=1;i<=n;i++)
     5         fa[i]=i;
     6     int getfa(int k) //找爹
     7     {
     8         if(fa[k]==k)    return k;
     9         fa[k]=get(fa[k]);
    10         return fa[k];
    11     }
    12     void merge(int x,int y) //合并
    13     {
    14         int fx=getfa(x);
    15         int fy=getfa(y);
    16         fa[fx]=fy;
    17     }
    18     bool judge(int x,int y) //判断是否为一个祖先
    19     {
    20         int fx=getfa(x);
    21         int fy=getfa(y);
    22         return fx==fy;
    23     }
    24 }
    View Code
  • 相关阅读:
    Java字符集
    ==和equals区别
    web.xml中load-on-startup标签的含义
    使用solrJ管理索引——(十四)
    Solr管理索引库——(十三)
    [置顶] 关于redhat系统yum源的配置1
    设置Oracle用IP远程连接和客户端访问
    jqueryUI中datepicker的使用,解决与asp.net中的UpdatePanel联合使用时的失效问题
    [置顶] 关于redhat系统yum源的配置2
    浅析innodb_support_xa与innodb_flush_log_at_trx_commit
  • 原文地址:https://www.cnblogs.com/zyker/p/6070119.html
Copyright © 2020-2023  润新知