71
2011 年年年年年年年年年年年年年年年年 教教教教教 年年年 [email protected]

2011 年湖南省大学生计算机程序设计竞赛 教练培训会

  • Upload
    mirari

  • View
    168

  • Download
    0

Embed Size (px)

DESCRIPTION

2011 年湖南省大学生计算机程序设计竞赛 教练培训会. 刘汝佳 [email protected]. 目录. ACM/ICPC 竞赛发展概述 ACM/ICPC 竞赛试题命题原则及基本要求 ACM/ICPC 评测系统 典型试题解析(含 2010 省赛部分题目) 参赛选手的选拔与训练. 目录. ACM/ICPC 竞赛发展概述 ACM/ICPC 竞赛试题命题原则及基本要求 ACM/ICPC 评测系统 典型试题解析(含 2010 省赛部分题目) 参赛选手的选拔与训练. ACM/ICPC 系列比赛. 总决赛 区域赛 亚洲 欧洲 北美洲 其他赛区. - PowerPoint PPT Presentation

Citation preview

Page 1: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

2011年湖南省大学生计算机程序设计竞赛教练培训会刘汝佳

[email protected]

Page 2: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

目录• ACM/ICPC竞赛发展概述• ACM/ICPC竞赛试题命题原则及基本要求• ACM/ICPC评测系统• 典型试题解析(含 2010省赛部分题目)• 参赛选手的选拔与训练

Page 3: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

目录• ACM/ICPC 竞赛发展概述• ACM/ICPC竞赛试题命题原则及基本要求• ACM/ICPC评测系统• 典型试题解析(含 2010省赛部分题目)• 参赛选手的选拔与训练

Page 4: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

ACM/ICPC系列比赛• 总决赛• 区域赛– 亚洲–欧洲–北美洲–其他赛区

Page 5: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

ACM/ICPC近十年发展• 参赛规模• 题目难度–算法性–代码量–知识面

• 相关比赛–各 OJ的网上比赛– TopCoder /GCJ/百度之星 /有道难题

• 业界对 ACM/ICPC选手的态度

Page 6: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

目录• ACM/ICPC竞赛发展概述• ACM/ICPC 竞赛试题命题原则及基本要求• ACM/ICPC评测系统• 典型试题解析(含 2010省赛部分题目)• 参赛选手的选拔与训练

Page 7: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

单题命题原则• 题目清晰无歧义–名词解释–约束(输入范围、格式、输出范围)–多解、无解的处理方式

• 可做性–答案客观、可评判–存在正确算法,使得对于满足题目约束下的绝大多数输入数据均能出解–代码长度合理(极难题除外)

• 避免论文题和知识点很偏的题

Page 8: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

题目搭配原则• 一般为 8-11题,编号为 A~K• 有一定比例的简单题、中档题和难题,以控制比赛结果• 不同赛区的整体难度系数不同–思维难度–编程难度(包括调试难度)–严密性要求(特殊情况等)–部分题目在题意理解上也有难度

• 避免知识点扎堆,鼓励多样性

Page 9: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

考查重点• 语言熟练程度:输入输出技巧、字符串处理、库函数、复杂代码的组织• 算法与数据结构• 数学概念与方法(数论、初等代数、线性代数、组合计数等)• 数学建模(包括对经典模型的掌握程度)• 后面会对知识点、训练方法进行详细叙述

Page 10: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

目录• ACM/ICPC竞赛发展概述• ACM/ICPC竞赛试题命题原则及基本要求• ACM/ICPC 评测系统• 典型试题解析(含 2010省赛部分题目)• 参赛选手的选拔与训练

Page 11: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

排名和评奖方法• 做题数• 罚时• 单题奖 (*)

Page 12: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

评测基础• 名词解释: AC, WA, TLE• 其他反馈: PE, RTE, OLE, CE• 关于 special judge• 每题只要完美解答才有意义!• 测试数据对题目的巨大影响–正确性–全面程度(规模、分类情况)–合理性(浮点误差、输入数据量等)

Page 13: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

关于评测系统• 手工评测和自动评测– PC^2– DOMJudge– OJ

• 关于 rejudge• 如何请求 clar• 谈谈几次 regional裁判经历– Beijing2002/2007, Xi’an2006, KL2008–反馈歧义、裁判一致性、代码随机性

Page 14: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

初学者的陷阱• 标准 I/O,文件输入,重定向• exit code• 画蛇添足的输入提示和异常处理• 不注意输入规模• 边界 /特殊数据• 评测数据一般比样例难得多!• 不能使用 fork、线程创建、网络相关函数• 建议避免无用的工程性代码

Page 15: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

目录• ACM/ICPC竞赛发展概述• ACM/ICPC竞赛试题命题原则及基本要求• ACM/ICPC评测系统• 典型试题解析(含 2010 省赛部分题目)• 参赛选手的选拔与训练

Page 16: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

古老的消息

Page 17: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

电灯问题• 按最少的开关把开始状态改变为终止状态

Page 18: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

包装导管• 你的任务是用一个尽量小的圆包含四个大小给定的圆。

Page 19: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

找图形• 在 n 条线段的大图里找一个 m 条线段的小图。线段都是水平 / 竖直的,小图中至少有一个线段端点对应大图的线段端点。大图的比例尺比小图要小。 n,m<=50

Page 20: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

地雷• 平面上有 n(<=2000) 个地雷。每颗地雷的爆炸范围是以它为中心的正方形。当炸弹爆炸时,爆炸范围内部和边界上的其他炸弹也将被引爆,形成链式效应。如下图,引爆地雷 1、地雷 2和地雷 5,将使所有地雷爆炸。

Page 21: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

猜序列• 对于一个序列 a1, a2, ..., an,我们可以计算出一个符号矩阵 S,其中 Sij为 ai+…+aj的符号(连加和大于 0则 Sij=‘+’,连加和小于 0则 Sij=‘-’,否则为’ 0’)。• 给一个符号矩阵,找出一个对应的序列。输入保证存在一个每个整数的绝对值不超过 10的序列满足条件。• n<=10

Page 22: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

运送超级计算机• 宇宙中有 n 个星球,你的任务是用最短的时间把 k 个超级计算机从星球 S 运送到星球

T 。每个超级计算机需要一整艘飞船来运输。行星之间有 m 条双向隧道,每条隧道需要一天时间来通过,且不能有两艘飞船同时使用同一条隧道。隧道不会连接两个相同的行星,且每一对行星之间最多只有一条隧道。

Page 23: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

拿行李• 飞机到达之后,你需要在行李提取处拿行李。行李会在一个多边形传送带上匀速运动,你的初始位置在多边形外部,并且当行李一出现就立刻开始匀速行走(速度严格大于行李运动的速度),直到拿到行李。你的任务是求出拿到行李的最短时间。

Page 24: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

不同的数字• 给定一个正整数 n,求一个由最少不同数字组成的正整数 m 且 m为 n的倍数。如果有多个 m,组成它们的不同数字个数相等,则取最小的一个。数据范围:

1<=n<65536 。注:所有数字皆为十进制。

Page 25: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

音乐厅调度• 一个著名的音乐厅因为财务状况恶化快要破产,你临危受命,试图通过管理的手段来拯救它,方法之一就是优化演出安排,即聪明的决定接受和拒绝哪些乐团的演出申请,使得音乐厅的收益最大化。该音乐厅有两个完全相同的房间,因此各乐团在申请演出的时候并不会指定房间,你只需要随便分配一个即可。每个演出都会持续若干天,每个房间每天只能举行一场演出。

Page 26: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

王国• 平面上有 n 个城市,初始时城市之间没有任何双向道路相连。你的任务是一次执行以下指令:• road A B:给城市 A和城市 B 连一条双向道路。这条道路保证不和其他道路在非端点处相交。• line C:询问一条 y=C的水平线和多少个州相交,以及这些州一共包含多少座城市。在任意时刻,每一组连通的城市形成一个州。在本指令中, C的小数部分保证为 0.5 。• n<=100,000 个城市,m<=200,000 条指令

Page 27: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

• 例如,在下图中, y=4.5 穿过两个州,共 8个城市; y=6.5 穿过一个州,共 5 个城市。

Page 28: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

疯狂的木乃伊

Page 29: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

立方体成像• 有一个 n*n*n 立方体,其中一些单位立方体已经缺失(剩下部分不一定连通)。每个单位立方体重量为 1 克,且被涂上单一的颜色(即六个面的颜色相同)。给出前、左、后、右、顶、底六个视图,你的任务是判断这个物体最多有多重。

Page 30: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

派• 有 F+1 个人来分 N 个圆形派,每个人得到的必须是一整块派(而不是好几块拼在一起),且面积要相同。问每个人最多能得到多大面积的派(不必是圆形)。

Page 31: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

长城守卫• 有 n 个人围成一个圈,其中第 i 个人想要 ri 个不同的礼物。相邻的两个人可以聊天,炫耀自己的礼物,所以如果他们发现自己拥有的某个礼物别人也有,会很不高兴。问:一共需要多少种东西才能满足所有人的需要?假设每种东西有无穷多个,不相邻的两个人不会一起聊天,所以即使拿到相同的礼物也没关系。• 一共有 5 个人,每个人都要一个礼物,则至少要

3 种礼物: 1,2,1,2,3 ;如果每个人要两个礼物,则至少要 5 种礼物: {1,2},{3,4},{1,5},{2,3},{4,5} 。

Page 32: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

分享巧克力• 给出一个长为 x,宽为 y的矩形巧克力,每次操作可以对其沿一条直线进行切割成两块长宽均为整数的巧克力。问:是否可以经过若干次操作将其切成 n 块面积为

a1,a2,...,an的巧克力?如下图,可以把 3*4的巧克力切成面积分别为 6, 3, 2, 1的四块。• n<=15, x,y<=100

Page 33: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

正方形• 给定平面上 n 个边平行于坐标轴的矩形,在它们的顶点中找出两个欧几里得距离最大的点。如下图,距离最大的是 S1的左下角和 S8的右上角。正方形可以重合或者交叉。

Page 34: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

丛林警戒队• 在丛林中有 n(<=50000) 个瞭望台,形成一个凸 n多边形。这些瞭望台的保护范围就是这个凸多边形内的任意点。敌人进攻时,会炸毁一些瞭望台,使得总部暴露在那些剩下瞭望台的凸包之外。平面上任选一个点作为总部,使得敌人需要炸坏的瞭望台数量尽量多。

Page 35: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

2010省赛情况A 197/0/129 B 222/4/123C 182/3/115D 240/37/32E 305/31/33

F 165/154/9G 96/76/15H 34/75/15I 28/126/6J 0/--/0K 18/--/0

注意对“通过率”的解释:上手容易程度、陷阱提交数 / 最快 Yes/ 总 Yes

Page 36: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

题目一览

Page 37: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

A.汽水瓶• 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是 5瓶,方法如下:先用 9 个空瓶子换 3瓶汽水,喝掉 3瓶满的,喝完以后 4 个空瓶子,用 3 个再换一瓶,喝掉这瓶满的,这时候剩 2 个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用 3 个空瓶子换一瓶满的还给老板。如果小张手上有

n 个空汽水瓶,最多可以换多少瓶汽水喝?

Page 38: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

#include<stdio.h>int main() { int n; while(scanf("%d", &n) == 1) { if(!n) break; printf("%d\n", n/2); } return 0;}

Page 39: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

B. 弟弟的作业• 你的弟弟刚做完了“ 100以内数的加减法”这部分的作业,请你帮他检查一下。每道题目(包括弟弟的答案)的格式为

a+b=c或者 a-b=c,其中 a和 b 是作业中给出的,均为不超过 100的非负整数; c 是弟弟算出的答案,可能是不超过 200的非负整数,也可能是单个字符 "?",表示他不会算。

Page 40: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

#include<stdio.h>int main() { char s[99]; int a, b, c, n = 0; while(scanf("%s", &s) == 1) { if(sscanf(s, "%d+%d=%d", &a, &b, &c) == 3 && a+b==c) n++; if(sscanf(s, "%d-%d=%d", &a, &b, &c) == 3 && a-b==c) n++; } printf("%d\n", n); return 0;}

Page 41: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

C. 数字整除• 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的 5倍。当且仅当差是 17的倍数时,原数也是

17的倍数 。• 例如, 34 是 17的倍数,因为 3-20=-17 是

17的倍数; 201不是 17的倍数,因为 20-5=15不是 17的倍数。输入一个正整数 n,你的任务是判断它是否是 17的倍数。

• 1<=n<=10100

Page 42: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

#include<stdio.h>#include<string.h>int main() { char s[200]; while(scanf("%s", &s) == 1) { if(!strcmp(s, "0")) break; int m = 0; for(int i = 0; i < strlen(s); i++) m = (m*10+s[i]-'0')%17; printf("%d\n", m==0?1:0); } return 0;}

Page 43: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

D. 台球碰撞• 在平面直角坐标系下,台球桌是一个左下角在 (0,0),右上角在 (L,W)的矩形。有一个球心在 (x,y),半径为 R的圆形母球放在台球桌上(整个球都在台球桌内)。受撞击后,球沿极角为 a的射线(即: x正半轴逆时针旋转到此射线的角度为 a)飞出,每次碰到球桌时均发生完全弹性碰撞(球的速率不变,反射角等于入射角)。

Page 44: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

• 如果球的速率为 v, s 个时间单位之后球心在什么地方?

• 每个数据包含 8 个正整数 L,W,x,y,R,a,v,s• 100<=L,W<=105, 1<=R<=5• R<=x<=L-R, R<=y<=W-R, 0<=a<360,• 1<=v,s<=105

Page 45: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

#include<stdio.h>#include<math.h>int main() { double L, W, x, y, R, a, v, s; while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &L, &W, &x, &y, &R, &a, &v, &s) == 8) { if(!L) break; x -= R; y -= R; L -= R*2; W -= R*2; a *= acos(0.0)/90.0; double dx = fmod(fmod(v*s*cos(a), L*2)+L*2, L*2); double dy = fmod(fmod(v*s*sin(a), W*2)+W*2, W*2); if(x+dx <= L) x += dx; else if(x+dx <= L*2) x = L-(x+dx-L); else x = x+dx-L*2; if(y+dy <= W) y += dy; else if(y+dy <= W*2) y = W-(y+dy-W); else y = y+dy-W*2; printf("%.2lf %.2lf\n", x+R, y+R); } return 0;}

Page 46: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

E. 内部收益率• 在金融中,我们有时会用内部收益率 IRR 来评价项目的投资财务效益,它等于使得投资净现值 NPV等于 0的贴现率。换句话说,给定项目的期数 T、初始现金流 CF0和项目各期的现金流 CF1, CF2, ..., CFT, IRR 是下面方程的解:

1 2

0 2 01 1 1

TT

CF CF CFNPV CFIRR IRR IRR

Page 47: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

• 为了简单起见,本题假定:除了项目启动时有一笔投入(即初始现金流 CF0 < 0)之外,其余各期均能赚钱(即对于所有 i=1,2,...,T, CFi > 0)。根据定义, IRR可以是负数,但不能必须大于 -1 。

• 每个数据占两行,第一行包含一个正整数 T( 1<=T<=10),表示项目的期数。第二行包含 T+1 个整数: CF0, CF1, CF2, ..., CFT,其中 CF0 < 0, 0 < CFi < 10000 (i=1,2,...,T)

• 输出仅一行,即项目的 IRR,四舍五入保留小数点后两位。如果 IRR不存在,输出 "No",如果有多个不同 IRR满足条件,输出 "Too many"(均不含引号)

Page 48: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

#include<stdio.h>int main() { int n, cf[20]; while(scanf("%d", &n) == 1) { if(!n) break; for(int i = 0; i <= n; i++) scanf("%d", &cf[i]); double l = -1.0, r = 1e6, m; for(int i = 0; i < 100; i++) { m = l + (r-l)/2; double f = 1.0, s = 0; for(int j = 1; j <= n; j++) { f /= (1+m); s += cf[j]*f; } if(s < -cf[0]) r = m; else l = m; } printf("%.2lf\n", m); } return 0;}

Page 49: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

F. 最大的数• 在有障碍的网格中走出一个最大的数。每个格子最多经过一次,每次只能往上、下、左、右四个方向之一走一格。

• 2<=R,C<=15, RC<=30

Page 50: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

G. 修路• 有一个 C 个结点 R 条边的有权无向图,求结点 1 到结点 C的最短时间。从结点 1出发的瞬间,你可以最多派人修一条路。对于路 i 来说,如果修了 t 个单位的时间,修完之后经过此路需要 viai

-t单位时间。换句话说,如果不修,需要 vi单位时间经过。路没有修完之前不能通过。• 2<=C<=100, 1<=R<=500, 1<=vi<=20, 1<=ai<=5

Page 51: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

H. 射击游戏• A和 B在玩一个射击游戏,战场由若干单位正方形积木组成。积木占据了连续的若干列,且图形周长等于它最小包围矩形的周长。下图 (a) 是一个合法的战场,但 (b)和

(c) 都不是。受重力影响,每个积木的正下方要么是地面,要么是另一个积木。为了让战场看上去错落有致、玩着更刺激,它不能恰好是一个矩形

Page 52: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

• A和 B轮流射击, A先射击。• 每次射击时,首先选择一行(该行必须至少有一个积木),以及“左”和“右”中的一个方向,然后往这个方向开火。子弹的威力为 1~3的均匀随机整数,表示子弹能打掉的积木个数,被打掉的积木将直接从战场中消失。如果该行的积木个数小于威力值,则子弹将在打掉该行所有积木后消失。注意:打掉的积木可以不连续。 • 每次射击完成后,悬空的积木垂直往下落。所有积木不再下落后,下一位选手才能开始射击。• 谁打掉了最后一个积木,谁就获胜。

Page 53: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

• 假定 A和 B 都足够聪明(采取让自己获胜概率最大的策略)• n<=6, 1<=hi<=6

• 举例:假定开局为

Page 54: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

I. 战场的数目• 在上题中,假设战场的图形周长为 p,一共有多少种可能的战场?例如, p<8时没有符合要求的战场, p=8时有 2 种战场:• p=10有 9 种战场:

• 要求输出方案总数模 987654321的值。• p<=109

Page 55: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

目录• ACM/ICPC竞赛发展概述• ACM/ICPC竞赛试题命题原则及基本要求• ACM/ICPC评测系统• 典型试题解析(含 2010省赛部分题目)• 参赛选手的选拔与训练

Page 56: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

推荐阅读• Rujia Liu, Training ICPC Teams: A Technical

Guide, Competitive Learning Institute Symposium 2008

Page 57: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

入门• 练习,练习,练习!• ACM/ICPC的重点在问题求解( Problem

Solving),而不是软件工程( Software Engineering)

• 做 OJ,但不要太随意(因为 OJ题目太杂)• 参加网上竞赛• TopCoder和 CodeForces

Page 58: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

如何做题?• 套题中的简单题• 系统完成《算法竞赛入门经典》及其《学习指导》(待出版)的习题• 一道题反复做,直到自己满意• 和其他人的代码对比• 总结,总结,总结!• 知识点• 如何提高效率• 如何提高准确性

Page 59: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

参考书目• 入门:–语言书–《算法竞赛入门经典》–《编程挑战》

• 进阶:–算法教材(如《算法导论》)–数学书(如《具体数学》)–《算法竞赛入门经典——学习指导》

• http://code.google.com/p/aoapc-book/

Page 60: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

竞赛所需知识点• 数学• 算法设计技巧• 领域相关算法

Page 61: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

数学:算术• 高中数学• 整数和实数在计算机中的表示• 高精度整数• 位运算

Page 62: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

数学:组合计数和概率论• 计数原理和经典问题• 概率和数学期望• 递推关系与生成函数• Polya定理• 常见整数序列

Page 63: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

数学:数论• 数论很深,但 ACM/ICPC中用到的并不多• 素数表生成与素数判定• gcd和扩展 gcd• 同余模算术、同余方程• 欧拉 phi函数• 分析技巧

Page 64: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

数学:其他• 组合游戏: Nim游戏, SG定理• 线性代数:矩阵乘法、高斯消元• 抽象代数:置换群• 数值分析:非线性方程求根,数值积分

Page 65: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

算法设计:暴力法• 重要、通用的问题求解方法• 可以用来验证其他算法• 算法之间的粘合剂• 对程序实现的要求较高• 需要多加联系

Page 66: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

算法设计:动态规划• 有规律可循,但也足够灵活• 学习经典问题: LCS, LIS, OBST, 0-1背包 , 编辑距离 , 矩阵链乘• 优化:数据结构、凸性

Page 67: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

算法设计:其他• 数据结构:优先队列、并查集、 Hash表、平衡二叉树、线段树、 BIT• 常见算法设计技巧:分治、贪心等

Page 68: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

领域相关算法• 图论• 几何• 序列、字符串和树的算法

Page 69: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

训练参考• 单人训练:看书、做题、做比赛…• 团队训练:需要合理组织–时间(比如在线比赛时间)– 地点–资料整理、讨论内容安排、题目收集–和其他队伍交流

Page 70: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

选拔机制• 先保证“群众基础”–宣传、讲座–和课程结合–争取一定资源(课程分数、学分、实习机会等)

• 建立梯队,老人带新人• 组织选拔赛–可以用 OJ上的比赛做选拔–选拔时可以不按照标准竞赛流程

Page 71: 2011 年湖南省大学生计算机程序设计竞赛 教练培训会

讨论时间