ACM国际大学生程序设计竞赛吉林大学选拔赛.docx
《ACM国际大学生程序设计竞赛吉林大学选拔赛.docx》由会员分享,可在线阅读,更多相关《ACM国际大学生程序设计竞赛吉林大学选拔赛.docx(12页珍藏版)》请在冰豆网上搜索。
ACM国际大学生程序设计竞赛吉林大学选拔赛
ACM国际大学生程序设计竞赛吉林大学选拔赛
暨吉林大学第一届程序设计竞赛
竞赛宗旨
进入二十一世纪以来,计算机与信息技术正在全球以令人难以置信的速度突飞猛进,计算机应用发展水平已经成为国家竞争力的重要标志,网络与知识经济受到了世界各国政府的高度重视。
发展计算机和信息产业的关键在于培养高素质人才。
对一流人才的培养和竞争已成为各国政府、学校和科研机构、各大公司等的头等重要的战略任务。
在此宏观背景下,各种旨在考察学生计算机应用能力的校内、国内、国际竞赛为选拔和培养高素质人才提供了广阔的舞台。
ACM/ICPC作为具有国际权威性和影响力的国际大学生程序设计竞赛,已成为衡量大学生程序设计能力和学校计算机学科水平的重要标准之一。
ACM/ICPC比赛是学校教务处组织的重点学生科技竞赛活动,是培养学生创新精神和能力的组成部分,受到全校同学的热切关注。
吉林大学2002年首次组队参赛,取得了较为理想的成绩。
为丰富校园学术气氛,进一步提高我校同学的计算机编程实践能力,鼓励和培养具有创新思维的人才,提供给更多学生展示自己才能的机会。
我校将举办2003年ACM/ICPC选拔赛暨吉林大学首届程序设计竞赛。
本次比赛由吉林大学教务处、吉林大学计算机科学与技术学院主办,旨在从全校同学中选拔优秀的程序设计人才,作为新一届吉林大学ACM竞赛代表队的预备队员代表学校参加全国比赛,并对优秀选手进行奖励
竞赛计划于2003年4月13日在吉林大学前卫校区举行。
竞赛组织
竞赛由学校教务处和计算机科学与技术学院共同组成ACM/ICPC竞赛委员会,负责竞赛组织、指导和具体问题安排。
组长:
赵继
副组长:
张长海、房蔓楠
成员:
戴继周、罗辉
竞赛委员会下设竞赛裁判组,由郭东伟负责;竞赛常务组,由李强负责。
同时邀请吉林大学计算机领域知名专家组成顾问组。
成员:
鞠九滨、金成植、周春光、孙吉贵、刘磊
竞赛联系地点在前卫校区萃文楼443,联系电话5166476-3,联系人:
郭东伟、李强。
竞赛支持网站:
参赛对象
1、凡吉林大学在校本专科生均可报名参加。
年级、专业不限。
鼓励低年级同学及女同学参加。
2、本次比赛学生以个人身份参加,每人独立参赛。
3、参赛同学在报名时提供个人资料,并自由设定一个英文ID。
3、参赛同学应保证自己身份等资料的真实性。
竞赛细则
1、选手在参赛时携带个人证件。
2、竞赛以上机为比赛方式。
3、竞赛中至少命题6题,至多命题9题,上机比赛时间为5个小时,中间不休息。
4、参赛选手可以携带诸如书籍、字典、手册、程序清单等文字性参考资料。
5、参赛选手不能携带任何可用计算机处理的软件或数据(不允许任何私人携带的磁盘或计算器)。
6、参赛选手不能携带任何类型的通讯工具,包括无线电接收器、移动电话等。
7、选手未解决全部题目不得提前离场
8、竞赛的预定时间为5小时,但当竞赛进行一定时间后,竞赛裁判可以因为出现不可预见的事件而调整比赛时间长度,一旦比赛时间长度发生改变,将会以及时并且统一的方式通告所有参赛选手。
9、当参赛选手出现妨碍比赛正常进行的行为时,诸如擅自移动赛场中的设备,XX修改比赛软硬件,干扰他人比赛等,都将会被竞赛裁判剥夺参赛资格。
试题与交流
1、竞赛中至少命题6题,至多命题10题。
题目的次序不代表任何含义,选手可以自由选择题目解答。
2、试题将以书面形式提供,每人一套。
3、在竞赛过程中,参赛选手不得和其他选手交流。
4、对于机器、环境等其他问题,选手可以与工作人员联系。
系统支持人员可以回答和系统相关的问题,例如解释系统错误信息。
5、对于试题本身的问题可以通过提交程序向裁判提问,裁判根据情况予以解答。
裁判认为必要时,将会通知所有选手。
6、比赛的试题及与裁判之间的交流使用的语言为英语。
竞赛评分
1、正确解答中等数量以上试题的队伍会根据解题数目进行排名,解题数在中等数量以下的队伍只发布解题数量,不进行排名。
2、在进行排名时,如果多人解题数量相同,则根据总用时加上惩罚时间进行排名。
总用时和惩罚时间由每道解答正确的试题的用时之和加上惩罚时间之和而成。
每道试题用时将从竞赛开始到试题解答被判定为正确为止,期间每一次错误的运行将被加罚20分钟时间。
未正确解答的试题不记时,对应的错误运行也不计入惩罚时间。
3、选手在比赛期间不能看到排名表和他人的成绩、解决的问题。
4、比赛中每一道题目对应一种颜色的气球(颜色的对应在试题中注明)。
在选手正确解答出某道题目后,工作人员将会把对应颜色的气球插到此同学的位置旁。
5、比赛结束前一个小时内,将不再为正确的解答摆放气球。
6、请注意竞赛裁判决定解答提交是否正确需要一定的时间。
7、参赛选手编号在竞赛前抽签决定,这个队号在裁决软件系统中使用。
竞赛环境和竞赛语言
1、竞赛语言包括C++、C和PASCAL。
2、每个参赛者使用一台计算机,所有选手使用计算机的规格配置完全相同。
3、选手的座位分布由组织者随机指派,在比赛之前确定,并通知选手。
4、吉林大学ACM网站:
8080现提供一百余道练习题目以及在线自动判题系统,报名者可在本网站注册后进行练习,并参加热身赛。
5、试题的解答提交裁判称为运行,每一次运行会被判为正确或者错误,判决结果会立即通知参赛队伍。
6、错误种类包括:
CompilerError(编译错)、RuntimeError(运行错)、TimeOver(超时)、OutputTooMuch(输出过多)、WrongAnswer(结果错)和PresentationError(格式错)。
竞赛评奖
1、为鼓励优秀同学,本次比赛设立若干奖项,获奖者将获得奖品及证书。
2、比赛设一等奖,奖励比例约占总参赛人数3%;二等奖,约占5%,三等奖,约占10%。
同时设纪念奖若干。
3、为鼓励女同学参赛,成绩最好的女同学将获得最佳女队奖。
4、一、二年级中成绩最好的同学将获得最佳新秀奖。
5、所有获奖者自动成为新一届吉林大学ACM竞赛代表队的预备队员,参加学校组织的进一步培训。
竞赛日程
1、本次比赛的报名时间为3月29日、30日9时至下午16时。
报名地点在吉林大学前卫南校区萃文楼443,无需任何费用。
2、比赛日期初步定于4月13日。
3、比赛地点待定。
4、比赛当天日程安排:
9:
20-9:
30
入场完毕
9:
30-10:
10
测试环境,热身
10:
10-10:
30
休息20分钟
10:
30-15:
30
正式比赛
15:
30-16:
00
休息,等待成绩计算
16:
00-16:
30
发奖,闭幕式
其中,12:
00左右,组织者在比赛现场为参赛同学免费提供午餐和水,中间不休息。
ACM/ICPC竞赛常见问题解答
比赛组织
Q(Question):
我能否携带字典、书籍和程序清单?
A(Answer):
可以,建议至少携带一本英文字典。
Q:
我能否携带光盘、软盘等存储介质?
A:
不能。
Q:
我能否携带计算器?
A:
不能。
Q:
是否提供模拟题?
A:
本次比赛不直接提供模拟题,选手可以直接到吉林大学ACM站点的在线测试(JOJ)中作题(:
8080)。
站点上的题目与本次比赛在风格、判决方式等方面基本类似,但难度上更高一些。
Q:
如果我在比赛过程中对试题有疑问怎么办?
A:
可以通过在线的对话系统询问裁判。
但请使用英语。
Q:
我问裁判的问题,别人能够看到么?
A:
一般看不到,当裁判认为这个问题有共性时,可以发布给大家。
Q:
在比赛过程中,我能否看到自己的成绩?
A:
可以看到自己以前的所有提交过程,包括每次提交的结论和提交时间。
但不能看到自己在整个赛场的排名。
Q:
在比赛过程中,我能否看到别人的成绩?
A:
除了根据气球判断别人解答出的问题外,不能直接看到排名表和别人成绩。
Q:
我提交一个解答后,多长时间能够反馈回判决?
A:
一般可以马上得出结果。
如果超过5分钟仍未有结论,请速与工作人员联系。
Q:
如果我的机器出问题怎么办?
A:
请速与工作人员联系。
请尽量在测试环境阶段发现问题。
在正式比赛期间由于机器问题造成的比赛时间延误,一般不追加时间。
Q:
在测试环境过程中,我应该干什么?
A:
在此阶段,将出一道简单的热身题目,题目的解答与否与比赛成绩没有任何关系。
选手应该在此期间熟悉所用机器的环境,检查软硬件是否有问题,并编制程序进行提交,熟悉提交系统的使用方法。
可以故意编制一些含有错误的程序,熟悉系统对于错误提交的反馈结果。
Q:
提交的解答由谁来判决?
A:
本次比赛的提交程序由程序自动判决。
在特殊情况下,由裁判判决。
Q:
提交的是程序本身还是可执行文件?
A:
程序。
Q:
我是否可以将程序放到多个文件中?
A:
不可以。
Q:
是否会因为我的程序书写规范而获得奖励,或者因为程序不易读而遭到惩罚?
A:
不会。
一切以程序的执行结果为标准,除非特殊情况,否则裁判不会留意你的程序的。
Q:
试题对算法有要求么?
A:
没有,只要在限制时间内能够正确解答出来就可以。
Q:
我的程序的运行时间远远低于要求,这是否作为一个衡量标准?
A:
不会。
只要在规定的时间内运行正确,都将同样对待。
Q:
我已经在纸面上写出了某道题的答案,但由于时间原因没有在计算机上运行,能否给一定的分数?
A:
不能。
本比赛完全按照在计算机上的程序与运行决定成绩。
关于试题
Q:
这个竞赛都考什么样的试题?
A:
本竞赛是关于程序设计方面的竞赛,因此试题类型都是编制程序,解决一个问题。
具体样例可以参见:
8080。
Q:
一共出几道题?
A:
最多9道,最少6道不定。
Q:
题目的难度如何?
A:
一般来说,如果在JOJ上能够作出10道左右的题目,那么在本次比赛中应该至少作出两道题。
Q:
我一定要按照题目的次序作题么?
A:
不。
选手可以自由决定作题的次序。
试卷中的题目次序与试题难度无关。
Q:
我是否要解决所有问题?
A:
不必。
如果你能解决所有问题,那么可以保证获得金奖了。
Q:
要想获得一等奖,需要解决多少道题目?
A:
按照我们的估计,大概需要解决三分之二以上的题目。
Q:
我只会用PASCAL语言,是否可以参赛?
A:
可以,本次竞赛允许使用PASCAL语言。
但国际上的ACM竞赛只允许使用C/C++和Java语言,因此如果你想参加吉林大学ACM代表队,还要学习和使用这两种语言,尤其是C++。
Q:
在判决时使用的数据是否和试题中的一样?
A:
不一样。
判决时使用的数据可以是符合题目要求的各种数据。
数据量也可能很大。
Q:
我需要测试输入数据是否满足输入条件么?
A:
不需要。
可以保证输入数据都是符合题目中的要求的。
Q:
数据从那里输入?
输出到哪里?
A:
本次比赛的输入输出都是标准输入和标准输出。
例如在C/C++中可以直接使用cin,cout。
Q:
我在本地如何进行测试?
A:
将你的程序编译成可执行文件后(假设为prog.exe),将输入数据写在一个文件中(假设为in.txt)。
在命令行模式下,使用文件重定向来测试。
例如:
Prog也可以将结果写到另一个文件中,如progout.txt。
这种方式可以读取到文件结束符。
Q:
输入输出是否有一定要求?
A:
是的。
试题中对于输入输出都有严格说明,必须按照这个标准进行。
否则程序将不能得到正确结果。
Q:
CompilerError(编译错)是什么含义?
A:
这说明你的程序在服务器上出现编译错误,请查看详细信息确定错误的具体内容。
并请检查提交时是否选择了正确的语言。
Q:
RuntimeError(运行错)是什么含义?
A:
这说明你的程序在运行期间出现了某些错误。
常见的错误包括:
除零错误,数组越界,指针指向的单元不存在等。
还有一种可能就是在C/C++中,main函数的返回值不是0。
Q:
TimeOver(超时)是什么含义?
A:
每一个题目都有一个最大运行时间的要求(在试题中明确标出),如果你的程序的运行时间超过这个要求,将被强制停止,并返回这个错误。
这种情况可能是由于程序中错误地出现了死循环,也可能是因为你的算法不够优化,这就需要重新设计算法和数据结构。
Q:
OutputTooMuch(输出过多)是什么含义?
A:
在系统中,为管理资源,对每个程序的输出数量是有限制的。
出现这种情况,一般都是因为程序中错误地出现了死循环,不断输出一些错误结果。
Q:
WrongAnswer(结果错)是什么含义?
A:
这是一种最常见的错误,也就是说明你的程序的计算出的结果不对。
如果你在本地测试正确,则要注意到判决时所使用的可能是各种符合要求的数据,需要考虑你的算法是否考虑到了所有情况。
Q:
PresentationError(格式错)是什么含义?
A:
如果输出中只有空格和回车与答案不一样,则返回这个错误。
在试题中均有严格说明,请仔细察看题目,尤其是空行。
这个错误一般标志算法的基本方案已经正确了,离正确解答只有一步之遥。
语言细节
Q:
比赛中所使用的编译器是什么?
A:
在服务器上使用。
在本地,由于条件限制,使用。
Q:
在C/C++中,main函数应该如何写?
A:
应该写成:
intmain(){…return0;}。
请特别注意main函数的类型是整型,并且返回值为0。
否则会导致RuntimeError。
Q:
我的程序在VC中编译正确,提交后出现CompilerError,具体信息是:
namelookupof`j'changedfornewISO`for'scoping
这是什么原因?
A:
这是由于VC中存在与C++标准不兼容的部分,一般是如下类型的程序段引起的:
for(intj=0;j<10;j++){…}j=10;
也就是说,在C++标准里,这种方式定义的变量j的作用域限制在for循环内部。
如果要在for循环外继续使用这个变量,请将其定义提前到循环前。
即如下例:
intj;
for(j=0;j<10;j++){…}
j=10;
Q:
C/C++中,如下的错误信息是什么含义?
the`gets'functionisdangerousandshouldnotbeused
A:
gets函数作为一个危险的函数,可以造成系统的漏洞,因此不建议使用。
如果要读取一行字符,可以使用cin.getline();
Q:
我是否可以使用VC中的MFC类库?
A:
不可以。
作为替代方案,可以使用STL中的容器等工具。
Q:
我是否可以使用C++中的STL?
A:
可以。
但是要注意VC中的STL存在一些与GNU编译器不一致的部分。
最好使用那些已经被证明正确的部分。
Q:
我是否可以使用动态内存?
A:
可以。
但是这样的程序不好调试,因此除非必要,建议避免使用。
一般情况下可以直接申请一个足够大的数组等。
Q:
我使用PASCAL语言,在读数据时经常出现错误,为什么?
A:
由于PASCAL中的read,readln语句不能自动处理空白符,因此在输入时需要手工处理。
另外在一次读入多个变量,而这时已经遇到文件结束时,将发生RuntimeError,请特别留意。
比赛经验
Q:
我是否应该先全面阅读题目?
A:
是的。
应该在全面阅读的基础上找出最简单的题目,从简到难开始做题。
Q:
我应该先做哪道题?
A:
先做最简单的,见上。
Q:
我如何知道那道题最简单?
A:
靠自己的理解能力和经验。
在比赛开始一段时间后,可以根据多数人升起的气球颜色来参照。
如果你认为某道题很简单,但是相应颜色的气球升起的很少,则这道题目可能有一些情况你和大家都没有考虑清楚。
Q:
如果一道题目,我反复提交都不对该怎么办?
A:
有的时候,换一道题,换个思路也许会更好。
Q:
我什么时候提交一道题目?
A:
要记住,正确的题目数量比用时更重要。
因此在觉得自己的程序正确,本地测试通过后,就要及时提交。
Q:
题目中的测试数据测试通过,是否就表示程序正确?
A:
不一定。
有些题目的测试数据没有覆盖所有可能情况。
需要自己另行编制测试数据。
Q:
自己进行测试时应注意什么?
A:
应注意测试数据的代表性,尤其是边界条件的情况。
Q:
比赛要结束前,我应该做哪道题?
A:
一般来说,在比赛结束前一个小时内,应该集中力量做一道题。
Q:
我的解答怎么会超时呢?
A:
有可能测试数据中数据的规模很大,在本地要对这种数据进行测试。
也可能对于输入数据的某些情况,存在一些快捷的判断方式。