ACM练习流程

时间:大一下学期+大一暑训

资料:《狂人C

练习:HDU 11页,NYOJ语言基础、数学分类

刷题思路:以打牢基础为主,务求做过的每一道题的都完全掌握

一、语言基础

a) 基本输入输出方式(ACM课件01

b) 条件判断(NYOJ 60

c) 循环体(NYOJ 463

d) 初步了解结构体

e) *指针(很少会用到,不过一定要掌握)

f) *文件操作

二、数学

a) 基础数学题(NYOJ 11343957647597

b) 素数

i. 素数判断(NYOJ 2224

ii. 筛选法求素数(NYOJ 26187

c) 欧几里得算法求最大公约数(NYOJ 4066111

d) 排列组合(HYOJ 459

e) 进制转换(NYOJ 100244275

f) 斐波那契数列(NYOJ 1376252

g) 阶乘(NYOJ 566584

h) 同余定理&模运算(NYOJ 102

三、简单排序(NYOJ 255124

a) 冒泡法排序

b) 插入法排序

c) sort()qsort()函数的用法

d) *归并排序(重点了解分治思想)

四、数据类型(了解下列各种数据类型的范围以及它们在C语言中的输入输出方式)

a) int

b) unsigned

c) float

d) double

e) long

f) int64long long

五、数组操作

a) 一维数组(NYOJ 5077

b) 二维数组(NYOJ 2933

六、字符串

a) 字符串基础知识(形式理论、存储形式)

b) 字符串处理函数(见百度百科<string.h>

c) 常见题目(NYOJ 62113241257264273

d) 用字符串处理数学问题(NYOJ 2873103

七、计算几何

a) 常见几何图形求面积(NYOJ 67、)

b) 几何数据处理(NYOJ 6199

c) 坐标计算(NYOJ 68101

八、基本的时间复杂度、空间复杂度计算

九、递归的应用(用递归的方法求阶乘及斐波那契数列)


时间:大二上学期+大二寒训

资料:《算法竞赛入门经典》 《算法导论》

练习:NYOJ 数据结构、贪心算法、动态规划、搜索分类

刷题思路:在AC同时尽量精简自己的代码,并考虑时间复杂度问题

一、数据结构

a) 线性表

i. 链表

ii. 栈

1. 括号匹配问题(NYOJ 2

2. 表达式求职问题(NYOJ 35

iii. 队列

b) 树

i. 树的定义、基本概念及相关操作

ii. 二叉树、满二叉树、完全二叉树

iii. 哈夫曼树

c) 图

i. 图的存储方式

1. 邻接表表示图

2. 邻接矩阵表示图

ii. 图遍历

1. 深度优先搜索DFSNYOJ 20

2. 广度优先搜索BFSNYOJ 58

iii. 图的连通性(NYOJ 42

d) 查找

i. 顺序查找

ii. 二分查找

iii. 哈希表

e) 排序

i. 快速排序

ii. 堆排序

iii. 选择排序

iv. 希尔排序

一、高级算法设计(重点,另外给出例子均为经典例题,其他还有很多扩展需自己多加练习)

a) 贪心算法

i. 活动选择(NYOJ 14

ii. 过河问题(NYOJ 47

iii. 背包问题(NYOJ 106

b) 动态规划

i. 最短路径(NYOJ 18

ii. 最长不上升/下降序列问题(NYOJ 1779

iii. 最长公共子序列(NYOJ 36

iv. 完全背包问题(NYOJ 860

v. 01背包问题(NYOJ 311

 

 

ACM小贴士:

① 刷题非常重要

② 但刷题量不代表实力

③ 攀比进度没有任何意义

④ 提交没有完全掌握的AC代码,对于你来说和WA无异

⑤ 往往想要AC一道题,编程技巧仅仅只占20%的比重,而剩下的80%,则被读题和算法思想各占去一半

⑥ ACM不是一个人的事情,合作和交流往往能起到事半功倍的效果

⑦ 在观看别人代码或者请教别人之前,请务必保证你有仔细思考过题目并自己动手尝试过。失去了钻研精神的ACMer没有任何价值

⑧ ACM或者说编程是一门艺术,认真对待你写出的每一段代码,好的代码能给人一种赏心悦目的感觉

⑨ printf是最好的查找错误的工具

 

你可能感兴趣的:(ACM练习流程)