初二寒假集训总结

导语

经过了寒假集训12天的学习与2次考试的摧残,我们结束了编程的寒假集训~~~

总的来说,还是有那么一些收获的,但是似乎比较凌乱,所以自己来总结,分类

知识点概括

 

 

分析

首先年前讲了两个较重要的知识点:

树的LCA && 树形DP

对我来说,LCA稍微掌握的好一点,而树形DP要用到DP,学地并不是很清楚,明白(至少比起宏帆的某些同学来说)

首先是树的LCA

意思就是求两个树上点的最近的公共祖先,我们选择一种最常用的倍增法:

也就是一步步向上跳,直到跳到LC

把整棵树建好后,我们每次向上跳2^{j}步,用DP的方法实现:

/*
f[i][j]表示第i个节点向上跳2的j次方层后到达的节点,然后初始化就有f[i][0] = fa[i](它的父亲)
状态转移为:f[i][j] = f[f[i][j-1][j-1] 先跳2的j-1次方,再跳2的j-1次方
*/

for( int j = 1 ; j <= 30; j ++ )//这一层枚举j
        for( int i = 0 ; i < n ; i ++ )
            f[i][j] = f[f[i][j-1]][j-1];

这也是倍增的重要代码,接着我们在跳的时候就不用一步步了,直接2的j次方跳,如:

void jump( int &x , int mu ){
    for( int i = 30 ; i >= 0 ; i -- ){
        if( high[f[x][i]] >= mu )
            x = f[x][i];
    }
}
int LCA( int x , int y ){
    if( high[x] > high[y] )//先把两个点放在同一高度,这样方便一起跳
        jump( x , high[y] ) ;
    else if( high[x] < high[y] )
        jump( y , high[x] );
    if( x == y )//如果跳到同一层后LCA就是y或x,直接输出
        return x;
    for( int i = 30 ; i >= 0 ; i -- ){//我们从大到小
        if( f[x][i] != f[y][i] )//如果两个点跳到不相同的地方我们就跳,因为LCA上面肯定是相同的
            x = f[x][i] , y = f[y][i];
    }
    return f[x][0];
}

数形dp

请看例题: computers

 

 

年后的数论:

(只要花大量时间弄懂,其实并不是很难)

知识点有些杂,以后遇到某类题的时候再细细讲一遍,先看:

求组合数的各种方法 , 同时这里还有求逆元的方法

勒让德定理

高斯消元

毕竟是总结,就不要抽全部来讲,主要是谈谈自己的收获

 

考试 && 总结 && 目标

第一次考试还是不错的,至少没有差很多,但是到了第二次考试的时候,数论是自己新学的,当时掌握得并不是很熟练,所以几乎算是考炸了~~~还差点爆0,自己的学习能力和总结能力还有很大提高的空间,争取在面对新知识点时能够在课堂上就可以消化,这也是对自己的一个要求。

自己依然要延续对编程学习的热情,同时我也要消化寒假的所有知识(当然,时间可能会要有些久),同时,还要顾及好文化课的成绩(特别是数学)

这学期目标:

1.能够在课堂上消化老师所讲的知识

2.加强DP能力,能够很快看出转移方程

3.将数论所讲知识理解且应用

4.文化课成绩也一定不能掉(特别是数学

5.考进至少一次前5(努力努力)

另外,还有这些尚未掌握:

1.CRT && 拓展CRT

2.拉格朗日插值

3.高斯消元

还有树形dp的很多题。。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值