2015年暑期ACM集训总结

今年暑假学校照例进行了ACM的暑假集训,跟以往不同的是:今年我作为一个老队员站上了讲台,体验了一把当老师的感觉,给新队员讲解ACM系列知识。

在集训开始之前,我跟一个同学写了一个ACM的评测系统,啊,评测系统?高达上啊。其实不然,这个系统也没有想象的那么复杂,只能简单地评测程序的几种状态:

Compile Error

Runtime Error

Time Limit Exceeded

Wrong Answer

Accepted

所写的评测系统,是一个线下的评测系统,即只能本地上交程序,然后评测,没有挂到网络上,不能通过网络提交程序,不像POJ那么高达上,但是还是能够正确地评判程序的运行状态。

所写的评测系统是基于Windowns环境,只能在Windows下执行,若要移植到Linux中我想也是很容易的,只需改改脚本而已,自从写了这个评测系统,突然发现脚本很重要。

既然聊到这个评测系统,就简单地说一下这个评测系统是怎么评测的吧。首先拿到提交的程序。然后尝试编译这个程序,若编译错误就会得到“Compile Error”并退出评测;若编译成功,就运行这个程序,读入提前写好的测试输入数据,然后让这个程序输出答案和运行时间,当然输入输出都是通过文件操作。若程序运行途中访问越界,栈溢出等会得到”Runtime Error“并退出评测,程序运行完之后,就启动评判程序,首先检查时间是否超时,若是则会得到“Time Limit Exceeded”并退出评测,否则检查答案是否正确,若发现某处答案跟标准答案不一致,则会得到“Wrong Answer”并退出评测,若答案完全一样则会得到“Accepted”。这其中涉及到一些Windowns脚本,即”.bat”程序的编写,这还是非常简单的事情,只需查查资料就能就编写简单的Windows脚本程序。

这个暑假的首要任务当然是给新ACMer讲解系统知识,ACM团队将ACM分为了两部分:1.完全新队员(就是刚刚新招募进来的)2.不完全新队员(进来一部分时间了)。更严格的来说还有一部分老队员,哈哈,很不幸我是老队员。我的任务呢是,偶尔会给完全新队员讲课,偶尔会给不完全新队员讲课。由于有部分的老队员,各老队员分工合作,各自负责一块知识,我们就将暑假需要讲课划分成几部分,我分到如下部分:

针对不完全新队员

图论:最小生成树,最短路

高级数据结构:字典树,线段树

常用技巧:尺取法,二分搜索

矩阵:矩阵乘法,矩阵快速幂,斐波拉契的矩阵

其他

针对完全新队员

快排

枚举

全排列

深搜DFS,广搜BFS

贪心

其他

还没有来得及讲解的部分:

处理技巧:快速读入、输出,离线处理

至于还有很多高深的内容:DP,平衡树,扩展欧几里德,离线处理等,有其他人负责,我倒是轻松,哈哈。

总体来说:讲课是按照先讲课数据结构,然后慢慢接触算法的路子。参照的书籍是《数据结构》-严蔚敏、吴伟明,《挑战程序设计竞赛》-巫泽俊译。

看起来任务不是很多,我也觉得任务很轻松,但是讲课还是蛮多事要做的:

1.提前备课

2.讲课

3.布置作业并自己也要去做

4.下次上课之前,还有讲解布置的作业

5.其他杂项

其实,如果你当天要讲课的话,基本上前前后后至少还是需要花掉一天的时间。毕竟我自己还得学习新的算法,去补充自己的知识库。

每周的集训生活是这样的:周一至周四该讲课就讲课该听课就听课,周五就利用所写的评测系统找相关题目练习并评讲,周六周天放羊自由安排。感觉还是蛮充实的。

总结一下自己暑假集训所得的收获:

首先给大家讲课还是会很多收获,以前不太明白的地方你在讲课之前肯定自己会去熟悉熟悉,不能说你肯定要完全掌握,但是你一定要非常清楚你要讲的东西一定是你自己很清楚的,这方面备课的时候对自己还是有很大提升的。在讲课的时候,你锻炼了自己的语言表达能力、沟通能力、勇气等。现在我讲课都不会心慌,哪怕下面座着习大大,我也丝毫不会紧张心慌。课后布置的题目你也会去做,去巩固自己讲的知识,有个明显的进步就是各大OJ AC题目多了一些,哈哈,这样说有一点功利吧,我觉得做学问不应该参杂功利在里面。

也跟着学习了一些算法:最大流,最小割,二分图,KMP,DP,扩展欧几里德,树状数组等。

常常在各大OJ做题目,有时是正式的网络比赛,如俄罗斯的Codeforces的比赛,杭电HDU的Bestcoder。最近在Codeforces上的状态非常不好,可能暑假集训有点累吧,有时明明很简单的问题会遇到坎,转换不过来,Rating连跌几次,跟当时的中国股市有着相同的规律,差点跌到生涯最低点。Bestcoder还好吧,都是老样子,没什么进步。集训中途遇到一个叫做”计蒜客”的一个比赛,服务器被爆了N次(抱歉的要找的页面去吃泡面去了),状态一样奇差,唉,伤心。

其他业余时间还学习了其他知识。跟着鸟哥学《鸟哥的Linux私房菜》系列丛书,不得不感叹鸟哥是个很诙谐幽默的作者,他将死板的知识用诙谐幽默的文字描述出来,我觉得非常有趣,我也很佩服鸟哥,算了我叫他鸟神吧。

在看《鸟哥的Linux私房菜》的同时我也在跟着网上一个叫“Nash_su”的老师学习他理解的Linux,我觉得他讲课虽然不诙谐幽默,但是讲课特别认真负责,条理清楚,特别感谢”Nash_su”老师。有兴趣的读者可以看看这视频,视频链接地址:http://study.163.com/course/courseMain.htm?courseId=232007

还学了什么呢?就是北京邮电大学崔毅东老师的《C++程序设计入门(下)》,这老师也是我见过最诙谐幽默的老师了,没有之一,他能将一个知识点描绘得非常幽默动听,感觉崔毅东老师一定是饱读诗书的人,上通古文,下通C++。他的《C++程序设计入门(下)》马上就要结课了,感觉时间过得很快,但是学到的东西倒挺多的,希望崔老师再出点其它课的公开课视频,让我们这些学子受益匪浅啊。有兴趣的读者可以看看这视频,视频链接地址:http://mooc.study.163.com/learn/BUPT-1000005002?tid=1000004006#/learn/announce

还学了一点中国科学技术大学华保健老师的《编译原理》,说实话这课没什么感觉,有一点点就是里面涉及到很多算法,什么广搜、深搜,有限状态自动机等,而这些算法恰恰是ACM中很多都学过的,我想也只有这个理由才能说明我学过这课之后没有什么感觉吧,偷笑。有兴趣的读者可以看看这视频,视频链接地址:http://mooc.study.163.com/learn/USTC-1000002001?tid=1000003000#/learn/announce

转眼为期六周的2015年暑期ACM集训就完了,假期还有十来天可以挥霍的时间,感觉时间过得很快,要学的东西还非常非常多,离我的目标还很远,但是有一点值得肯定的是:离我的目标近了一点。我想这是值得庆幸的。

在ACM这条道上坚持了1年多了,我一直坚信ACM是条正确的道路。

最后展望一下我校的ACM,先辈给我们铺路,后辈任在摸索不平的道路,但是有一点很肯定的地方:ACM慢慢地走上了正确的轨道,取得突破指日可待。

对了,忘了告诉读者我是来自*学院,至于是哪儿不必深究了吧,有什么可以交流的,希望在评论区交流,谢谢。

2015年8月,在此祭奠。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 02:16:09

2015年暑期ACM集训总结的相关文章

yzm10的ACM集训小感

7月30号,ACM集训进行了两周,一切都已on the right way.这时的我适时地从题海中探出头,其实除了刷题,也该写点什么来总结下过去.首先,在第一周里,我学习了数据结构,知道了STL这么一个神奇的存在.不管是stack.queue亦或multiset,还有最具代表的priority_queue(习惯性地打上下划线..)有时候堆的logn真的能帮你优化不少时间.只需一个头文件,你就可以调用他们(美滋滋~).还有k学长讲的并查集也非常实用,区间合并用到cys学长share的next跳(类

七月23 ACM集训——最小生成树

prim算法模板 int  prim(int x){    int i,j,sum=0,min=M,k; memset(vit,0,sizeof(vit));    memset(dis,0,sizeof(dis));    for(i=1;i<=m;i++)        dis[i]=p[x][i];    dis[x]=0;    vit[x]=1;     for(i=1;i<m;i++)    {        min=M;        k=-1;        for(j=1;j

acm集训训练赛A题【签到题】

一.题目 Description After winning gold and silver in IOI 2014, Akshat and Malvika want to have some fun. Now they are playing a game on a grid made of nhorizontal and m vertical sticks. An intersection point is any point on the grid which is formed by t

acm集训训练赛(二)D题【并查集】

一.题目 Description There is a town with N citizens. It is known that some pairs of people are friends. According to the famous saying that ?The friends of my friends are my friends, too? it follows that if A and B are friends and B and C are friends th

acm集训训练赛B题【排序+模拟】

一.原题 Description Being a programmer, you like arrays a lot. For your birthday, your friends have given you an array a consisting of ndistinct integers. Unfortunately, the size of a is too small. You want a bigger array! Your friends agree to give you

七月25 ACM集训——kmp算法

字符串比配问题,通过引入next[]而使效率提高 关于next[]数组,是对模式串的特征来构造的: 为了确定在匹配不成功时,下次匹配时j的位置,引入了next[]数组,next[j]的值表示P[0...j-1]中最长后缀的长度等于相同字符序列的前缀. 在匹配过程称,若发生不匹配的情况,如果next[j]>=0,则目标串的指针i不变,将模式串的指针j移动到next[j]的位置继续进行匹配:若next[j]=-1,则将i右移1位,并将j置0,继续进行比较. 具体思想: 根据定义next[0]=-1,

15/7/2017 暑期第一次集训小总结

为期7天的集训今天晚上就要结束了-- 排名--很惊险的卡到了第8名--还好没有被刷下前8 学长们过来讲课也很精彩,出的题也很--到现在都没有改完,题解慢慢补-- 其他dalao还是一如既往的疯狂打正解,我却只能骗分,差距的确还很大. 我知道自己有很多不足,比如审题没有思路(尤其是dp题),比如代码能力太弱,调试程序时间总是很长,比如手速太慢,等等. 但是我正在努力的进步--最近学了数位dp,无旋treap,还给其他同学讲了一下概率和期望,也积累了一些套路. 希望自己能不断提升吧,祝自己GLHF,

五一九天假期ACM集训记录【4月27日—第二天】

今天上午九点到下午两点,我们做了山东省第三届ACM原题,整体结果还比较不错,我们队做出了4道题,两道模拟,一道字符串处理,一道高数问题.比赛前期我们配合得不错,比较快速的A出了两道模拟题.但后来状态不太好,主要是我的问题,后来我做的是那道字符串处理的题目,有点麻烦,分割单词,然后在单词中提取数字,数字还不是标准的,做了好长时间,终于测试数据过了,提交了一下,结果果断地返回了一个WA,那种感觉太纠结了,就像当头一棒,千辛万苦弄出来的一个,还是WA,用来队友给我说得考虑空格,两个单词之间可能有一个或

ACM集训的Day3 B。。。盲目搜索之DFS。。。

milk 一.题目描述: gzp有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到 另一个桶中,直到被灌桶装满或原桶空了.当然每一次灌注都是完全的.由于节约, 牛奶不会有丢失 写一个程序去帮助gzp找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性. 二.格式: INPUT FORMAT: 单独的一行包括三个整数A,B和C. OUTPUT FORMAT: 只有一行,升序地列出当A桶是空的时候,C桶牛奶