分类
信息学C++竞赛

信息学奥赛的教学过程

我的信息学奥赛C++编程教学过程介绍:
  第一轮:呆算。不允许学生用计算器和过多的巧算方法,只靠自己的硬功夫计算,强调呆算出一两组测试数据正确答案的重要性。呆算知微观!
  第二轮:巧算。学生思考,寻找规律,找出巧算的方法,信息学中称之为算法。巧算知宏观。
  第三轮:程序。初步实现一个逻辑合格的正确程序,这个程序算出来的答案要确保个个是正确的,但在信息学判分时,一般还只是20-70分之间的水平,这一轮偏重语法实现的正确性,确保能得部份分,效率还不是主要目标。得分才是王道!
  第四轮:边界。当某些特殊数据输入时,会得到什么特殊结果与特殊现象?用特殊数据来全面检验自己程序模型的逻辑正确性,做到提交判分时答案正确性一次OK,这样才能造就“神枪手”,而不是欲速则不达的“机枪手”!此时往往会发现前面的程序为什么不能得到满分的原因!
  第五轮:升华。在巧算的基础上继续深思,抽象计算过程,排除边界漏洞,找到更妙计算方法和更快执行过程,改进程序,直至满分。正所谓,升华靠悟本质!

  有些程序,n个数据的计算规模,呆算要n的3次方的计算次数,巧算要n的2次方,升级只要n的1次方。假设n为10000个数据,每次提效1万倍,改进两轮提效1亿倍。