知识点复习

需要看(有些需要打标*)内容:

线段树*
快速幂*
LCA(tarjan)(树上倍增)*
卡特兰数
概率

快速幂:

int ksm(int a(乘数),int b(次方))
{
    int r=1,base=a;
    while(b!=0)
    {
        if(b%2==1)二进制该位为1
          r*=base;
        base*=base;
        b=b/2;
    }
    return r;
}

LCA(tarjan)(树上倍增)

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,head[10005],t=0,fa[10005],way[10005],root,vis[10055],ff[10005][150];
way表示层数,fa表示祖先,root为树根,vis表示访问与否,ff表示倍增所能跳到的祖先
struct node
{
    int from,to,next;
}e[40005];
int build(int a,int b)
{
    t++;
    e[t].from=a;
    e[t].to=b;
    e[t].next=head[a];
    head[a]=t;
    t++;
    e[t].from=b;
    e[t].to=a;
    e[t].next=head[b];
    head[b]=t;
}//双向建边
int fi(int u)
{
    if(fa[u]!=u)fa[u]=fi(fa[u]);
    return fa[u];
}//找父亲
int bu(int root)//建层
{
    int bia[10005],tail=1,h=0,qu[30005];
    bia[root]=1;
    qu[1]=root;
    while(h<tail)
    {
        h++;
        for(int i=head[qu[h]];i!=0;i=e[i].next)
        {
               if(bia[e[i].to]==0)
               {
                   tail++;
                   qu[tail]=e[i].to;
                   bia[e[i].to]=1;
                   way[e[i].to]=way[e[i].from]+1; 
                   fa[e[i].to]=e[i].from;              
               }
        }
    }
    return 0;
}
int main()
{
    cin>>n>>m>>root;
    for(int i=1;i<=n;i++)
       fa[i]=i;
    for(int i=1;i<=m;i++)
    {
       int a,b;
       cin>>a>>b;
       build(a,b);
    }
    bu(root);//建层
    for(int i=1;i<=n;i++)
    {
        ff[i][0]=fa[i];
    }20次方等于1for(int i=1;i<=14;i++)
    {
        for(int j=1;j<=n;j++)
        ff[j][i]=ff[ff[j][i-1]][i-1];
    }
    int a,b;
    cin>>a>>b;
    if(way[a]>way[b])
       swap(a,b);
    while(way[b]>way[a])
    {
       b=fa[b];
    }//使两个跳到一个层数上
    if(a==b)
    {
      cout<<a<<endl;
      return 0;
    }
    for(int i=14;i>=0;i--)
    {
        if(ff[a][i]!=ff[b][i])
        {
            a=ff[a][i];
            b=ff[b][i];     
        }
    }
    cout<<fa[a];
}

这里写图片描述

卡特兰数

令h(0)=1,h(1)=1,catalan数满足递推式:
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)*h(0) (n>=2)
例题如(出栈序列)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值