Skip to content

Category Archives: 军机处

省队集训总结及比赛策略及近几天的安排

坦率讲,并没有在省队集训中真正“学到”什么东西。最大的收获是在九场测试中得到的临场经验,以及Emacs的学习和应用。 遇到会做的题,应该用迭代开发/代码复查/生成数据等各种方法保证正确性。Coding也不宜太快,毕竟NOI的时间是充足的。 遇到大致知道方法但是写起来很麻烦的题目,不妨先花几分钟写一个Brute Force的程序放到那儿,然后在埋头Coding。那种麻烦题目一定要把思路完全理清楚了再去写,千万不要写到一半写不下去了,那是最得不偿失的。 遇到暂时想不出来的题,不用慌,慢慢分析,或者从一个垃圾程序开始慢慢迭代开发。相信自己的实力。 遇到一看便知很麻烦很麻烦的题,大胆放弃,但写个Cheat程序还是必不可少的(至少可以稳定情绪)。 注意先写程序后优化。程序的每个重要版本都要备份一下,例如第一个可以编译的版本,第一个过样例的版本,某次大改之前的版本等等。 在准备在程序中大量加入调试代码之前,先看看变量、数组的声明是否正确,看看有没有弱智错误。 近几天的安排: 任务一,每天写二至三道NOI难度或略低的题目,保持状态。 任务二,精炼一下几个(不太常写的)最基础的东西的代码:quicksort、heap、highprecition等。 任务三,打印自己写过的文章/代码看。 就这样吧。

省队集训总结

See Also: http://blog.sina.com.cn/xjoxjoxjo http://blog.sina.com.cn/marforever 7月11日 1. Emacs+GDB的确是正确的选择。 2. 代码复查是好习惯。 3. 双向搜索、或者说折半搜索的思想。(第三题) 7月12日 1. 越是简单的题,越是需要用DataMaker、代码复查等各种手段反复查错,保证AC。例如今天的第一题,写错太不应该了。一定要警惕在某道题上花费时间太少的情况。 2. 出现访问段异常时,如何在GDB中定位到异常的那一行? 3. 第三题那个AC程序的随机化——不断缩小随机的范围,相当神奇。 7月13日 1. emacs -nw 更好用。 2. 第三题文件名写错,300分变成200分,攒RP了。 7月14日 1. 第一次见的经典网络流题AC了还是很高兴的。Dinic果然无敌。 2. DP题还是要先慎重确定方程无误后再下手。注意贪心(第三题)。 7月15日 1. 第三题绝对是太贪了,考虑太复杂。不过也怨题目没有给出更详细的数据范围。否则我就很可能Brute Force了。 2. 第二题独立想到,图论基础还是可以的。 3. 第一题策略严重不当,想的二分答案,等二分答案的所有步骤都写完了才意识到不能直接二分(也没想到yxy那种找单调性的上下界然后二分的方法)。 4. 强调一下:先把算法想清楚再下手。 5. 细节的确决定成败,第三题明明想到了Fibnacci数,也想到了那个唯一分解的定理,但由于错误的“负Fibnacci数”的想法,导致满盘皆输。只是一个小小的偏移量就可以避免麻烦的负数。真是心有不甘啊。 7月17日 1. 多日以来攒的RP终于在今天短暂爆发,拿到了第一个真正的300。不过就像别人说的那样,这导致我今天的收获远不如前几天。但也不一定,前几天得到的是“教训”,今天得到的就是“经验”了,例如:高度模块化(大不了最后再改成inline、define),坚持迭代式的编程(滚动数组、最优性剪枝、常数优化之类的东西都一定防盗最后再搞)。看到其他几个人的代码风格真是惨不忍睹。 2. 你以为会个最短路、会个网络流就是会图论算法了吗?看看Graph-Theoric Algorithms吧。太优美了,真的。 3. Emacs学习告一段落。GDB还是做不到熟悉的静态调试那样得心应手。 7月18日 1. 第一题正确的贪心策略没有想到,用加卡时的乱搞得了一半的分数,还是很满足的。 2. 第二题做过的题20mins就写AC了,就应该这样。 [...]

计划7.11-7.20

以学习为主。知道自己来这里干嘛的。 上午仔细做题,注意时间分配,练Emacs,练GDB。 中午另安排。 下午要把上午的所有题都搞清楚,除非公认不可能搞清楚。 晚上总结一天。 注意珍惜时间。 根据明天的情况再细化。

开始做SPOJ

对于我这种人来说,如果想让我踏踏实实的进行一个长期计划,最好的办法就是把这个计划让全世界的人都知道。比如说我准备做USACO和SGU的时候,就专门各开了一个发布题解的blog,这样我做了多少题目老师、同学、朋友甚至父母每天都能看到,我也就一点不敢松懈了。现在USACO征程完成了,SGU之旅做了80+(窃以为Chapter I/II中最有价值的题目都做了),于是我又打算做SPOJ了。 SPOJ真是一个非常非常好的OJ,网站的架构和理念非常先进。超级无敌的多语言支持就无需赘述了。还有一些很贴心的功能,比如说它会保留你每次提交的源文件,可以自己下载自己以前的代码,而且若选择了邮件通知功能,还会把每次提交的代码作为附件发给你。另外像调整宽度、换肤、提供每题的PS/PDF等小细节都很令人赞叹。这的确是我看到的最完美的OJ系统,在上面做题的确非常舒服。 好了,说了这么多,只是为了督促自己努力做题。除了学些新算法(其实需要学的已经为数不多)以外,更重要的是训练自己的代码风格变得严谨,彻底改变以前那种狂提交的做题方式,提高一次AC率,顺便还能给这个题解很缺乏的OJ贡献一份尽量丰富的题解。考虑到我的blog已经着实不少,就不再为这个OJ新开blog了,请通过这个页面监督我的做题情况!

NOI训练近期计划

近期必须要提高效率。用二至三天的时间详细记录时间表,以提高效率。每天早计划晚总结。 必须要做的是把Linux装好,Emacs和Vim都试试。总结一下自己用Dev-C++时需要的全部功能,然后用某种编辑器全部替代了。GDB也可以试试,如果真的很爽的话就用Emacs了。Vim最无奈的就是编译了,感觉上比较好的解决方案还是写makefile,这样的话多Tab要搞清楚。 算法方面,一个必须要掌握的就是块状链表,考的可能性很大,所以说完全可以花一两天甚至更多时间仔细研究仔细实现,除了NOI2005那个题以外还得找别的练习一下。网络流再写一两遍relabel-to-front,感觉一下,有空的话写个HLPP也行,Dinic写不写似乎都没关系,毕竟距离标号已经写得很熟了。 平衡树是另外一个大重点,一定要多练些麻烦的题练熟了。把递归Treap和Buttom-Up Splay要练到十分钟/十五分钟能默写的程度。 字符串处理方面。Trie图的相应的那几道题目做了也就没什么需要多说的了。最好搞懂“扩展KMP”是什么东西。后缀数组,如果遇到了非得O(N)的题再考虑学Skew Algorithm,否则就把nlogn的好好掌握就行了。 做题的话,SGU应该在一周内告一段落。下一步就去SPOJ攻难题吧,也可以照着网上的题目推荐内容做些POJ/Ural之类的补充。另外发现TopCoder的题目很不错,对照着题目/题解欣赏下似乎很好。 效率,一定要注意效率。珍惜时间,绝对不启动浪费大块时间的娱乐计划。