ACM集训日记-8月25日总结

1.前言    

    今天是在这里集训的最后一天,接下来也马上要开学了,不知不觉在这一小隅地方呆了近一个月,感触还是颇深的,每天做题,看着A题榜上的变动,还是有一些压力的,总结一下这近一个月来的收获。提早一个月来到学校这是我自己的选择,为了提高自己,既然选择了这条路就要走下去,虽然觉得自己的进度比不上人家,但好像确实是以一种自己的速度在成长,这个暑假重新回顾了搜索、dp、图论,学了单调队列,树状数组。虽然树状数组只掌握了基本的运用,还不是很到家。

2.搜索、dp、图论

    这些是上学期学的东西了,一开始的第一个专题开放的时候,说实话有一段时间没碰代码还是会手生的,更别说上个学期没怎么学扎实的图论了,感觉又重新学了一遍图论,图论这一章是上学期最后所学的内容,将图与定义相结合,图论的内容就不会变得那么抽象,graph=(V,E)。V是一个非空有限集合,代表顶点(结点),E代表边的集合。
图也有遍历,并且可用广度优先搜索和深度优先搜索,从图中某一顶点出发系统地访问图中所有顶点,使每个顶点恰好被访问一次,这种运算操作被称为图的遍历。为了避免重复访问某个顶点,可以设一个标志数组visited[i],未访问时值为false,访问一次后就改为true。图论有很多算法,弗洛伊德算法是最基础的用三个循环n3找到两点之间的最短距离,算法非常简单,但是在实际运用上容易超时,所以还有dijstra算法,prime算法,这些算法经过一个专题的练习已经有些熟练了,比如计算最短生成树的方法也熟稔于心。

3.树状数组

    这个专题入门很快,就是学会lowbit(int x),sum(int x),add(x,v)就行,但是遇到题目能不能想到用树状数组比较难。树状数组做了几个比较模板的题目,就是关于排兵布阵的各种变形,比如二维排兵布阵,还有维护区间的值。

 

int lowbit(int x)  
{  
    return x&(-x);  
}  
int sum(int x)  
{  
    int res=0;  
    while(x>1000)  
    {  
        res+=c[x];  
        x-=lowbit(x);  
    }  
    return res;  
}  
int add(int x,int v)  
{  
    while(x<MAXN)  
    {  
        c[x]+=v;  
        x+=lowbit(x);  
    }  
}  

4.单调队列
    单调队列也是有一个模板,一个head来记录顶端的值,rear记录当前数

 

 

while (head<=tail&&q[tail]<=a[i]) tail--;
    tail++;
    q[tail]=a[i];
    indx[tail]=i;

    这就是比较常规的操作。
5.总结

 

    总之,很感谢老师能给我们这么一个机会一起集训ACM,而且也很感谢自己选择留下来,做与众不同的事,我不后悔,我会一直坚持下去,为了现在的自己,也为了未来的自己,加油。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值