acm入门训练指南.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ACM入门训练指南 目标读者: 想要在ACM/ICPC里进行发展,并通过SDUTOJ进行训练的初学者。 使用语言: 只要会一门程序设计语言,就可以进行ACM 训练了。通过训练,可以更好地 掌握语言使用能力、程序和算法设计能力。 一般通用语言如C、C++和JAVA 都可以,它们有各自的优势和缺点: 1.C 语言设计算法效率比较高,但输入输出的格式控制比较麻烦,而 ACM 对程序进行评测时对输入输出的格式要求比较高,使用C 务必要熟练掌握输入输 出方法。 2.C++封装了输入输出流,方便输入输出操作,减少出错的可能性;C++提 供了非常强大的标准模版库 (STL),使得很多在C 上实现起来比较麻烦的代码, 在C++上却非常方便。 3.JAVA 在大型工程和安全方面有比较独特的优势,但在ACM 里面却不是一 种优秀的语言,因为JAVA 的执行效率要比C、C++慢很多,而ACM 的题目都对程 序运行时间有限制,如果题目限时比较紧的话,就不适合用JAVA,然而JAVA 却 提供了很方便的高精度运算(大整数运算)。 建议刚学完C 就用纯C 来训练,在训练过程中可以学习C++,有时间再把STL 好好学学。 输入输出: 初次接触ACM 训练时经常会遇到的问题,就是输入和输出问题。如果对语言 的输入输出问题不是很熟悉的话,一定要先重点研究一下,特别在输入和输出时 不能有冗余信息,因为学习语言时可能习惯了使用提示信息来提高程序的交互 性,但ACM 不需要任何交互性。不严格按照题目要求进行输入输出的程序是无法 通过系统测试的。 在线评测系统: 在线评测系统,英文叫Online Judge (简称OJ),是开放的程序自动评判 系统。只要能上网,注册并登录系统后,就可以选择题目,编写程序,提交程序 代码,然后由系统自动进行编译和执行,并通过系统预设测试数据来检验程序代 码的正确性。通过使用OJ 训练,可以提高编程和算法设计能力,随着训练的深 入,可以参加在评测系统上举行的ACM-ICPC 程序设计竞赛。 很多学校都有自己的在线评测系统,里面提供了很多题目给平时学习训练 用。SDUTOJ 是我们学校的在线评测系统。需要先在上面进行注册,注册后就可 以进行题目的训练了。 1 点击主页上的“练习”,就可以看到里面的题库,可以选任何一个题来做, 里面的题目不是由易到难进行排列,而初学者要选择比较简单的题目来做。一般 来讲,每道题目都有正确率Ratio (AC/Submit)——正确次数/提交总次数,那 些正确率比较高并且提交次数比较多的相对就会比较简单。 一旦确定了做某道题,在读懂题意以后,就可以进行构思和编码了,编码完 成后进行程序的调试。一般不直接在OJ 的提交页面输入代码,而是先利用VC6.0 等开发环境进行程序的编译、调试和运行。因为即使编译成功的程序运行也不一 定就正确,要用题目提供的样例输入数据(示例输入Sample Input)进行测试, 如果结果和样例输出数据(示例输出Sample Output)不一致,就要对代码进行 修改,直到能通过所有测试数据。 初学者经常会碰到这样的问题:我的程序运行后对示例输入(Sample Input) 数据得到了对应的示例输出(Sample Output)呀,为什么提交的时候仍然不正 确呢?这是因为OJ 系统中关于这道题目的测试数据远远不止这些,它还有许多 你看不到的测试数据,你的程序必须要能通过它所有的数据,才算是正确的 (Accepted)。如果有能力,需要根据题意自己设计一些测试数据来测试程序, 以便保证提交的正确率。 下面挑出最简单的一个题(SDUTOJ1010)进行讲解: 题目名称下面的“Time Limit:1000MS Memory Limit:60000K”是题目的运 行时间和使用内存限制。 这是一个求两数之和的题目,输入用空格分开的两个数a b,输出a+b 的结 果。编写代码时需要注意的是,本题的输入数据不是只有一对数据,而是多对数 据,每对数据占一行。因为没有指出共有多少对输入数据,于是我们可以编写如 下代码: 2 //C 语言 #include stdio.h int main() //把main 函数定义成int 类型 {

文档评论(0)

guirenduo13 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档