一、集训时间安排
1、每周周一至周五下午五点二十分至六点 (四十分钟);
2、每周周六上午八点半至十一点半(三个小时);
3、周末自学时间,完成洛谷作业,刷题巩固。
二、课程内容安排
(一)、语法篇(9、10月)
1、初识计算机编程
(1)、编程和NOIP介绍
(2)、第一个程序和IDE的使用
(3)、实验课程:算术表达式
(4)、实验课:引入变量,解决数学计算问题
(5)、完成洛谷-》新手村-》第一个任务
(6)、综合课:进制转化、变量类型、标准输入输出
2、顺序结构
(1)、实验课程:poj输入输出习题
(2)、综合课:顺序结构(位数反转、交换变量、分钱游戏)
3、选择结构
(1)、逻辑运算(是非、与或非)
(2)、简单IF语句、伪代码的使用(分段价格)
(3)、实验课:闰年问题、鸡兔同笼
(4)、条件嵌套:洛谷(小玉家的电费、不高兴的津津)
(5)、综合课:三整数排序、观察变量、《入门经典》第一章习题
4、循环结构
(1)、for循环(叠加、叠乘)
(2)、break与continue语句
(3)、实验课:构造数(aabb问题、回文数)
(4)、while与do-while(格里高公式、辗转相除法)
(5)、实验课:阶乘之和
(6)、综合课:循环的代价、文件操作、《入门经典》第二章习题
5、数组、简单字符串和高精度运算
(1)、数组和循环、什么时候要用数组?(关灯问题、约瑟夫问题)
(2)、二维数组(蛇形填数、入门bzoj)
(3)、简单排序(选择排序、冒泡法、桶排)
(4)、简单字符串的输入输出、相互转化(统计单词数、统计区间数字)
(5)、高精度运算(加减乘除、乘方、取余运算)
6、函数和应用(《一本通》)
(1)、函数的值传递、地址传递(变量交换)
(2)、递归算法(斐波那契数、汉诺塔、快速排序)
(3)、简单递推(数塔、阶梯、数格子、放苹果)
7、队列、栈和链表(《啊哈算法》)
(1)、队列和结构体
(2)、栈(回文数、打牌游戏)
(3)、链表和数组模拟链表
(二)、基础算法篇(11、12、2、3月)
1、暴力求解(《啊哈算法》)
(1)穷举法:循环(洛谷oj:三连击)
(2)全排列、排列组合(深度搜索和回溯)
(3)广度搜索优先
2、简单图论
(1)、图的表示
(2)、图的深搜、广搜
(3)、最短路径算法:四个算法
3、树
(1)、树的基础和应用
(2)、二叉树及其性质
(3)、堆、大根堆和小根堆(合并果子问题)
(4)、特殊的树:哈夫曼树、最小生成树
(5)、并查集问题
4、简单数论
(1)、再谈排列组合
(2)、二分法
(3)、素数的求解方法
(4)、欧几里德定理和拓展欧几里德定理
(5)、同余方程和费马定理
5、动态规划
(1)状态、转移方程
(2)刷题(100道题以上)
(三)、综合练习篇(6月、7月)
1、oj: 洛谷、bzoj
2、《入门经典》、《训练指南》、《挑战》
(五)、进阶提升(8、9月)
1、再谈算法
(1)、搜索和剪枝
(2)、网络流问题
(3)、字符串