上海交大 戴文渊 大牛写的东西,建议大家看看 yiyiyi4321 2007-07-10 13:49:30.0 
http://dwyak.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3d%25e7%25ab%259e%25e8%25b5%259b 
up yiyiyi4321 2007-08-27 18:46:01.0

TEAM对我意味着什么 ceshi 2008-04-16 22:25:16.0

这个世界是假的,而TEAM是真的。
什么是“假”?活在这个世界上,要说很多违心的话,做很多违心的事。为了自己或者小集体的利益,有的时候要说谎,有的时候要装傻,甚至要恭敬地面对一些无耻小人。长久下去,你会忘记什么才是真的,会认为一些不道德的事是理所当然的,因为它们普遍地存在于这个世界上。
TEAM是一个避风港。更确切说,是交大ACM队这样一个最优秀的TEAM。只有这样的TEAM,才能提供一个“真”的环境。

我没有足够的博爱精神,不可能真诚地对待所有人。让我真诚面对那些我讨厌的人,Mission Impossible。但是,把范围缩小一下,变成一个三五人或者十来人的TEAM,我还是能够做到真诚的,只要这个TEAM足够优秀。
在队里,并不意味着我一句谎话都不说。不过,我做任何一件事,不管方式是好是坏,出发点总是好的,最终都是为了让这个队变得更强。
记得hehe曾经说过,队友对你的好,也许只有你的男朋友可以做到。的确,如果不是同在一个TEAM中,你不可能什么事都设身处地的为别人着想;不可能为别人做这么多事;更不可能花费很大的代价,最终只是为了别人的提高。
一个优秀的TEAM,可以给人一种回家的感觉。虽然你在队里可能要做很多对自己没有太多实际利益的事情,但是这个队可以给你极大的心灵慰藉。她时刻告诉你,什么才是对的,什么才是美好的。这是一种心理的需求。

可是,交大ACM队不是长久的地方,我的下一个TEAM在哪里呢? 
用脑子比赛 ceshi 2008-04-16 22:25:49.0 
可能有人会说ICPC是一个脑力的竞赛,当然是用脑子去比的。其实不然,绝大多数的队伍都不懂得用脑子去比赛。果真是这样的吗?恩,至少我是这么认为的。

谈起这个话题,不禁让我回忆起自己大一时的事情。
2002年10月29日,那时我所在的队伍刚刚在北京赛区失利,紧接着又要去韩国赛区。29日是我们走之前的一天晚上,lincx把我们叫到徐汇校区,和我们一起总结北京赛区的比赛。
北京赛区是一场难以形容的比赛。表面上看起来,我们队几乎没有犯任何错误,但结果是我们输掉了比赛。
我记得,总结的时候,lincx并不直接指出我们队哪里有问题,而是从自己的角度向我们介绍,如果他们队来做这套题,会怎么做。
在lincx这支队里,队友读了题,都必须告诉他——lincx总是知道所有已经读出来的题目,从而很清楚地了解场上的情况。lincx形容自己要做的事,就是对所有已知的题目不断地“排序”,取出最简单的题目去做。
我想,“排序”这个词可能未必非常恰当,但是很形象。它描述了一个队长在场上需要做的事情:队长就是要时刻了解场上的最新情况,通过思考,作出正确的判断,决定本队的走势。“排序”是一种最简单的分题策略,也就是先做简单题,后做难题。当然,对高水平的队伍来说,分题的顺序是很有讲究的,并不仅仅是“排序”这么简单。

至此,我终于明白一支队应该如何去比赛了。
队长就是一支队伍的大脑。队长的脑子必须运转起来。如果队长在场上不冷静,不能够审时度势,作出正确的判断,那么这支队伍就不可能用脑子去比赛。
同时,我也明白了,我们在北京赛区不是没犯错,而是步步皆错。对一支没有章法的队来说,决策本身已经错了,即便执行得还可以,也不能改变错误的本质。

我想,正是这个时候,我开始真正懂ICPC了,也开始具备了当一个队长的基本素质。因为,我知道了队长在队中的作用。

插句题外话,那天晚上lincx对我说的另外一句话,影响了后来我对Comars的使用。他说,他觉得我在机器上的时候非常令他放心,但是一旦坐在机器下面,他就不知道我在干什么了。而北京赛区的比赛,我在开赛45分钟左右对了第二题以后,就一直做在机器下面……
所谓资源优化配置,就是用人要用其长,避其短。如果像lincx所说的,我坐在机器上敲代码比较令人放心,那么就应该尽可能多地让我去敲代码。队里最怕的是:1. 大家抢着敲,以为谁敲得多,谁就是英雄;2. 搞平均主义,每人敲三道。
我发现,我作的很多决策都是受了别人的影响。lincx自然是最多的,yini也不少,还有hehe(以后有机会可以再说一些 :D)。优秀的队长身上总是有很多东西可以借鉴。

还是回到正题。
这个赛季,作为教练,我经常有机会看各队队长的总结。其实,我最喜欢在总结里看到这样的话,“n小时的时候,我们对了x道题,并且有y道题可以做。场上的局势是……我们准备……”我自己写总结的时候也比较喜欢写这样的句式。如果一个队长能够说出这样的话,那说明这个队长在动脑子——判断场上的局势,根据自己的情况,制定下一步的计划。特别是对于那些要敲题的队长,更需要做这样的事。因为队长敲题意味着暂时放弃对局面的控制,所以必须在上机之前做好总结工作,安排好后面至少半小时的计划。

人们可能会比较自然地去关注一些出彩的地方,比如说某人一场比赛做了七八道题,或者最后几分钟对了一道题(特别是又拿到冠军的),并称之为英雄。我觉得,光做到这点,充其量叫做野人(比常人力气大一点)。要成为英雄,还必须用脑子。我认为,英雄善于以用自己的智慧和实力。面对实力弱于自己的对手时,要将对手玩弄于股掌之间,不给别人任何机会;面对实力相当或高于自己的对手时,要懂得迂回前进,争取最大的取胜希望。或者,借用yini的话,就是do more with less。
所以,当主持人说出,全场的队伍都受到某人的误导时,我深为不能赞同。因为,这不是应该强调的地方。如果这都值得强调的话,那么只能说明这支队不是一支用脑子去比赛的队。而一支不动脑子的队,在面对真正的强队时,一定是不堪一击的。 
原则 ceshi 2008-04-16 22:28:10.0 
做人有做人的原则,做事有做事的原则。同样的道理,作为一支队,也应该有它的原则。

什么才是一支队的原则呢?举个例子吧,在Spirit队中,有一条原则是,Comars是核心。任何与这条原则相背的事必须让路。比方说,我和Tiaral抢Comars的题就是不允许,因为与原则相背。我和Tiaral必须想尽一切办法让Comars能够集中精力做更多的题。
也许有人会觉得这条原则似乎不那么有道理。的确,我也不能证明它一定最有道理的。但是,这是根据我对Comars的了解,经过长时间思考作出的决定。我觉得,它在绝大多数情况下还是正确的,并且也征得了队友的同意。

一支队有了原则以后,会带来什么样的变化呢?有原则的队,有很强的凝聚力。因为,一旦意见出现分歧,就可以搬出原则来,与原则相背的一律否决;与原则不相背的,一定不会很重要,大家都不会太在意。这样的队,可以做到意见高度统一,从而使战斗力得到充分发挥。

那么,是否有可能因为制定了原则而否定一些更好的决策呢?是有可能的。但是,我一直相信,比决策优劣影响更大的是意见的统一。一个决策,哪怕不是那么优秀,如果大家齐心合力去做,同样能有很强的战斗力。反之,决策很好,但是大家不齐心,只可能是一盘散沙。

在队里,我非常喜欢去树立一个核心,因为核心是最好的原则。 
Cappuccino ceshi 2008-04-16 22:28:46.0 
最近我一直在想,这四年来究竟有哪些队是可以作为借鉴的。想来想去,大概有三支吧——Team W、Cappuccino和Princeps。
为什么是这三支队呢?他们不能算作真正的强队,他们的战术思路与交大传统的强队模式也不太一样。但是,作为一支队来讲,他们做得同样相当出色。
今天就先谈谈Cappuccino吧。Team W和Princeps我想放到以后一起讲(写到一半写不下去了,就先存在草稿箱里吧 :D)。

Cappuccino是2004年北京赛区的冠军。但是,他们的价值,却一直到了去年北京赛区结束,我才真正意识到。实际上,2005年的Eccentric和2004年的Cappuccino相比,唯一区别就是用Azazel换掉了Ivan。按理说,Azazel的技术实力远高于Ivan。但是,真正到了比赛场上,我们发现,没有Ivan就是不行。

Ivan,借用abcsea的一句话来说,他思考过很多问题,人际交往能力爆强。我至今还记得他参加面试时说的一句话。他说,他来参加这个比赛,是“把交大的ACM当作一项伟大的事业去支持”。我觉得,就这句话,决定了他一定是个优秀的队长。
我也面试过别人。一个晚上,十几个人,每个人都是千篇一律的“对自我的提高”,会让你听得昏昏欲睡。Ivan,他能看出比别人更本质的问题,说出比别人更本质的话。(说到这里,也就可以解释,为什么Ivan人际交往能力爆强了)
正因为Ivan能看到更本质的东西,作为一个队长, 他比别人更能看清他们队需要什么,从而做出更准确的决策。另外,超强的人际交往能力,也有利于他使用好他的两个队友。

说了这么多Ivan,有点冷落Ivan的两位队友dysentery和cobra了。其实,Ivan能成功地组建起Cappuccino这样一支队,与dysentery和cobra出色的能力是分不开的。
dysentery最大的特点就是有很强的责任心。举个例子吧,在队里的两年时间里,大半的饮用水都是他搬的(当然,和他长得比较高大也有关系)。一个做事认真负责的人应该怎样去使用呢?我想,对Ivan来说,小事一桩啦。
cobra是个有思想的人,悟性很高。lincx每次和大家聊天,别人都被lincx一个又一个生动的故事吸引。只有cobra,全神贯注地听,他要听的是lincx说这个故事的意图。善于思考的人,往往善于控制自己;善于控制自己的人,往往有比较好的心理素质。cobra就是一个心理素质极好的人。前年的北京赛区,最后10分钟,顶着巨大压力改出Cappuccino第5道题、从而奠定胜局的人正是cobra。我想,换一个人,在当时的场景下,很可能早就奔溃了。

Cappuccino和Eccentric这两支队,无法让我不去比较,因为这两支队相差的只有一个人。从技术角度来看,不消说,Eccentric远高于Cappuccino。不用说Azazel强于Ivan了,就是dysentery和cobra,经过一年的训练,也比他们第一年比赛时强了许多。但是,为什么给人的感觉却是Cappuccino更好呢?
我喜欢将实力分为技术实力和非技术实力。Azazel强于Ivan的,是技术实力。而Ivan给队里带来的更多是非技术实力。
参加过比赛的人一定会有这样的体会,有的时候你觉得可以做六七道题的比赛,最终可能只做出三四道。也就是说,你的技术实力只发挥出了一半。非技术实力(包括思考问题的深度、准确度,关键时刻的冷静程度等)就是用来发挥另一半技术实力的。
Ivan的眼神、动作,他说出的话,更重要的是他作出的决策,为Cappuccino营造了一个良好的氛围。所以,有Ivan在,Cappuccino队员的能力总是能够得到充分的发挥,从而变相提高了技术实力。

Cappuccino的成功告诉我们一个道理:在你贪婪地提高着技术实力的同时,千万不要忽视了非技术实力的培养。

后记:写活着人真的很难。特别是Ivan,更难写,因为猜不透。写得不对的地方还请批评指正 ^_^ 
代码能力 ceshi 2008-04-16 22:32:29.0 
在ICPC比赛中,个人能力方面,如果粗略地分的话,大致可以分为算法能力、代码能力和查错能力。那些大学才开始参加比赛的选手,写代码的基本功一般会比较扎实,主要瓶颈应该是算法能力。而对于OI转ICPC的选手来说,代码能力往往是最大的缺陷。随着OI转ICPC的选手逐渐增多,代码能力的问题愈发暴露了出来。

一、如何定义代码能力

Comars曾经给代码能力作过一个比较准确的定义。2004年暑假时,Comars曾经说过:他认为150行以内的题目,他的1Y率非常高,并且保持稳定;而当代码长度超过150行以后,1Y率就开始急速下降了。如果我们画出一条1Y率的曲线的话,150行就是一个转折点。我们不妨认为,150行就是Comars当时的代码能力。一年以后,经过努力,Comars把代码能力提高到了250行。不过,这已经是后话了。

二、如何提高代码能力

我一直觉得写程序和写文章是一个对很好的类比。

写文章需要先从宏观入手,构思文章的结构。写程序同样需要。一个好的结构,就是一个好的开始。一个好的开始,是成功的一半。
一篇好的文章需要各种句式和词藻的合理组合。体现到写程序上来,就是一些单句以及三五行的小结构的熟练使用。这些都是需要平时总结和积累的。

但凡文章写得好的人,一定看过很多别人写的文章。同样的道理,多看别人的程序,用心地去看,也可以提高自己的代码能力。
我鼓励队员去看别人写的程序,特别是像Comars这样的选手写的程序。从优秀的程序中,我们可以体会别人良好的程序结构,同时也可以学到很多写程序的技巧——三五行的小技巧。在和Comars做队友的两年时间里,我通过看Comars的程序,学会了很多小技巧。逐渐地,我觉得我写的某些程序已经和Comars有点相像了。
那么,如果身边没有Comars这样优秀的选手可以借鉴,该怎么办呢?其实没关系。任何一个程序都是可以看的。一个程序,就算写得再差,总还会有一两个闪光点,要想办法把它们找出来。另外,程序里写得不好的地方,也要一一找出来。
读程序,从某种角度来看,就像读史。好的历史是用来借鉴的;不好的历史则应该引以为戒。读程序也是一样,择其善者而从之,其不善者而改之。

三、谨慎地对待STL和SCL

STL - Standard Template Library。在ICPC的选手中,STL是相当受欢迎的。的确,如果STL用得好,程序可以精简很多。既提高了编程的速度,也提高了编程的准确性。
SCL - Standard Code Library,就是标准程序库。对很多选手来说,SCL可是命根子啊 :)

我觉得STL和SCL都不是坏东西,但是需要谨慎地使用。

我向来不主张队员一进队就开始用STL(虽然这种现象普遍存在 :()。我认为,STL的作用是锦上添花,而不是雪中送炭。比方说,一个heap写得很熟练的队员,我觉得他可以偷偷懒,用一下STL。但是,那些不太会写heap的队员,就不应该用STL里的heap。因为,他们真正应该做的是掌握写heap的能力——这才是最本质的代码能力。
学会用STL是件很爽的事情。但是须知有所得必有所失。如果过早地接触STL,会让你失去很多锻炼代码能力的机会。

至于SCL,我的主张是尽量不用。
不可否认,队里确实有一些人SCL用得很好。但是,我至今仍然没有见过一个SCL用得很好,同时有拥有很强的代码能力的人。同样是有所得必有所失,你平时习惯了去抄程序,必然少了很多自己构思程序的机会,从而影响代码能力的提高。
当然,我也不是完全反对去使用SCL,偶尔用一下也是可以的,例如在比赛中。但是,需要注意的是,一定要用自己整理的SCL。我见过有人拿着一本别人整理的SCL,虽然内容很齐整,但是我没见他用对过。因为这本SCL不是他整理的,他自己都不知道每个程序在使用的时候应该注意些什么,于是一用就错。

后记:其实代码能力这个话题让Comars来讲可能更适合一点,因为他更有心得。不过他现在忙于杀鸡 :) 
FAQ ceshi 2008-04-16 22:33:17.0 
整理了13个以前遇到的问题,如果想起什么新的问题的话,再慢慢更新。
(注: 这其中有很多问题和回答都是从别人那里记下来,或者根本就是别人整理的)

1. 就快要比赛了,我们队还存在很多问题,怎么办?

正视你们的优势和劣势,承认它们的存在。
借用yini的话,比赛就是一个“do more with less”的过程。你要清楚自己的more和less。无论自己是more还是less,我们就是要去do more。

2. 比赛前应该想什么?

有人说,比赛前应该完全不想比赛的事情,放松自己的心情。我觉得这并不是很妥当。
在我看来,比赛前就应该去想比赛本身,把全部精力放在比赛上。可是,这难道不会影响心态吗?我认为不会。所有影响比赛心态的事都不属于比赛本身,例如排名、胜负,都是比赛以外的事。

3. 比赛中,领先了怎么办?落后了怎么办?和对手咬得很紧怎么办?出现问题怎么办?

比赛中有很多种状态,领先、落后、平分秋色、稳定、混乱……但是,归根结底,这都是一些状态。
对于自己所处的状态,我们要以局外人的眼光来看待,这样才能作出理性的判断。
作为局内人,我们需要知道,已经发生的事不可改变,我们可以做的就是在剩下的时间中do more。
注意,do more不等于“拼命”,还是要理性地去分析自己究竟还能做多好。

4. 自己或者队友实力太弱,怎么办?

很多人都会钦佩实力强的人,鄙视实力弱的人。但是,最起码在一支队里,这样的事情不应该发生。
我们要清楚每个队员的强弱,用纯理性的眼光去看待这些问题。你可以为一个队员的不足而着急,但是决不可以为此而埋怨他/她(或许完全做到这一点是不可能的)。
实际上,无论是谁,放在队里一定是有用的。再不济,读题的事情总可以做,还可以模拟sample、出一些测试数据……不要认为这些事情是低级的。它们和想算法、敲题一样,都是对队里的贡献。你可以想想,有谁可以跳过读题,直接去想算法、敲程序的?

5. 如何面对自己的队友?

如果可以把一支队看成一个整体的话,那么为什么不把它比作一个人呢?这样一来,每个队员就相当于身体的一部分。似乎没有哪个人的左右手是会分彼此的。如果这样去想(注意,是要这样去想,而不是仅仅懂得这个道理),我觉得你已经不需要再讨论这个问题了。

6. 对手太强了,怎么办?

如果你完全不是他们的对手,那为什么又要称他们为“对手”呢?
前面也提到了,比赛就是一个“do more with less”的过程。即便你们是全场最差的队,即便你们根本没有实力去争取哪怕是一个倒数第二的名次,你们同样可以do more。
可能你99%会输掉这场比赛,但是请你正视这个概率,勇敢地去面对可能到来的失败。

【转】真正的Acmer的更多相关文章

  1. 爱挑剔的acm程序员 acmer

    2015-9-2 acmer敢于承认自己的错误,并积极改进.自信.有些酷爱运动,各个方面都很优秀:有些则认为出去“玩”就不是玩,有自己的小世界,玩电脑才是最爱. 2015-9-1 acmer都很聪明, ...

  2. XidianOJ 1020 ACMer去刷题吧

    题目描述 刷题是每个ACMer必由之路,已知某oj上有n个题目,第i个题目小X能做对的概率为Pi(0<=Pi<=1,1<=i<=n) 求小X至少做对k道题的概率 输入 第一行输 ...

  3. 伪Acmer的推理(dfs/bfs)

    时间限制:1000MS  内存限制:65535K 提交次数:12 通过次数:9 收入:32 题型: 编程题   语言: C++;C Description 现在正是期末,在复习离散数学的Acmer遇到 ...

  4. http://www.cnblogs.com/ACMer/p/5170255.html

    http://www.cnblogs.com/ACMer/p/5170255.html

  5. 2015年百度之星初赛(1) --- A 超级赛亚ACMer

    超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem D ...

  6. ACMer(转)

    我所了解的ACMer主要分为以下几类: A类:天才型(这个在咱们学校基本不存在),所以就不用考虑了-_- ! B类:刷题很快,题数是最多的几个之一,但有一个习惯就是喜欢看题解,思考问题一想不出来了就想 ...

  7. hdoj 1402 Prepared for New Acmer【快速幂】

    Prepared for New Acmer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  8. [转] acmer必看的26个对acm态度

    acmer必看的26个对acm态度   转载自:http://www.cppblog.com/Darren/archive/2009/08/03/92099.html Attempt Keep on ...

  9. hdu 1420(Prepared for New Acmer)(中国剩余定理)(降幂法)

    Prepared for New Acmer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  10. HDU 1420 Prepared for New Acmer【中国剩余定理】

    /* 解决问题的思路:中国剩余定理,还要注意的是数据的类型,要使用__int64位 解决人:lingnichong 解决时间:2014-08-30 06:56:35 :简单题 */ Prepared ...

随机推荐

  1. 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV——> OpenCVr ...

  2. 优化Java堆大小5温馨提示

    总结:Java没有足够的堆大小可能会导致性能非常大的影响,这无疑将给予必要的程序,并不能带来麻烦.本文总结了影响Java居前五位的能力不足,并整齐地叠优化? 笔者Pierre有一个10高级系统架构师有 ...

  3. Swift - 在界面上生成81个随机红,灰色圆点(SpriteKit游戏开发)

    下面是生成一个“围住神经猫”游戏的初始场景: 1,界面下方会生成9*9共81个圆点,同时圆点内部添加文本标签显示索引 2,默认圆点为灰色,每行随机取两个点变为红色 3,奇数行和偶数行有一定的错位,错位 ...

  4. MySql自己定义排序

    查询语句: select id,name,stauts from special where id in (50,51,52,53,54,55) order by FIELD( id ,51,50, ...

  5. 电驴 emule 源代码分析 (1)

    关于电驴emule 的源代码,网上有一个  叫刘刚的人 分析的 非常多,可是假设你仅仅是看别人的分析,自己没有亲身去阅读代码的话,恐怕非常难  剖析整个系统. 关于emule  主要就是 连接 kad ...

  6. Thinkphp入门三—框架模板、变量(47)

    原文:Thinkphp入门三-框架模板.变量(47) [在控制器调用模板] display()   调用当前操作名称的模板 display(‘名字’)  调用指定名字的模板文件 控制器调用模板四种方式 ...

  7. 浅析java的浅拷贝和深拷贝

    Java中任何实现了Cloneable接口的类都可以通过调用clone()方法来复制一份自身然后传给调用者.一般而言,clone()方法满足:       (1) 对任何的对象x,都有x.clone( ...

  8. mysql基础: mysql列类型--字符串

    mysql列类型:整型   http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--时间和日期  http://blog.csd ...

  9. java如何运行OS命令(转)

    •javac TestRunTime.java•java TestRunTime hostname // 执行“hostname”Linux命令•即可看到输出 import java.io.IOExc ...

  10. Win32环境下的程序崩溃异常定位

    1       案例描述 作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭.请与您的供应商联系.呵呵,这句微软的“名 ...