ACM 第一讲
自我介绍:
讲师,6、7年前曾经是ACM的培训老师,算重操旧业。以前讲C语言和数据结构通常不带教材和讲义,现在退化很多,不要对其有太高期待。
ACM比赛:

一支队伍3位ACMer

ACM特点:绝对的专业性,绝对的公平,绝对的正能量。
培训目标:以ACM为中心,提高专业素质,补充正能量。
(计划每周一次,本学期讲三到四次,三、四个主题。不是相关课程的“补课”,不系统讲课内的基础知识)
1.ACM题目
它分为两个部分,题干和例子。有些直接看例子就能看懂。但有些题在题目里有陷阱。
2.编程工具:
语言可以用C,C++,JAVA,pascal等,一般C和C++
3.提交,计分规则、时间惩罚
打完代码后会有一个提交,上面选择好你的语言类型。提交后,会有一个号码,是你的测试号。用这个测试号就能找的你的代码在OJ(Online Judge)的结果。下面是计分规则:

Penalty(罚时)
在相同做题数下Penalty越小越好。Penatly的计算方法如下:每道试题用时将从竞赛开始到试题解答被判定为正确(AC)为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。
例如:A、B两队都正确完成两道题目,其中A队提交这两题的时间分别是比赛开始后1:00和2:45,B队为1:20和2:00,但B队有一题提交了2次。这样A队的Penalty为1:00+2:45=3:45而B队为1:20+2:00+0:20=3:40,所以B队因Penalty少而获胜。
当然如果你AC了某道题后,之后这一题所有提交的代码都不算罚时和时间。
4.常见反馈
OJ评判结果分为如下几类:
Accepted
程序的输出完全满足题意,通过了全部的测试数据的测试。
Wrong Answer
你的程序顺利地运行完毕并正常退出,但是输出的结果却是错误的。
注意:有的题包含多组测试数据,你的程序只要有一组数据是错误的,结果就是WA
Presentation Error
你的程序输出的答案是正确的,但输出格式不对,比如多写了一些空
格、换行。
请注意,大部分程序的输出,都要求最终输出一个换行\n。
不过,计算机程序是很难准确判断PE错误的,所以,很多PE错误都会被评判成WA(Wrong Answer )
Compilation Error
你的程序没有通过编译[黑人问号脸]。你可以点击文字上的链接,查看详细的出错信息,对照此信息,可以找出出错原因。
一般来说,参赛选手很难犯这种低级错误,这种错误主要是由 Linux 环境下相关编译器与你使用的本地编译器之间的差异造成的(应该经常在服务器上刷题,用个人PC刷题弱爆了)
常见的ACM题库:
浙江大学、北京大学 、天津大学、厦门大学 、福州大学、华中科技 、宁波理工 、汕头大学 、中国科大、西南科大、暨南大学、中山大学 、福建师范、哈工业大、四川大学、哈工程大、武汉大学 、同济大学、南开大学、湖南大学 、上海大学 、兰州大学 、宁波大学、杭州电子科技大学(ACM特长http://acm.hdu.edu.cn/)、华东师范大学(ECNU)、浙江师范大学(ZJNU)、西班牙Valladolid大学、瓦拉杜利德大学(UVA)、俄罗斯Ural大学
Judging
我们正在运行你的程序进行测试,请稍候,通常时间不长,该干嘛干嘛,做其他题目就OK。
Rejudging
我们更新了测试数据或者评判程序,并且正在进行重测,这个过程比较耗费资源,请稍候。可能是比赛中大量集中提交导致系统接近崩溃,常见,需要耐心,先做其他题目,千万不要重复提交,控制情绪:)
Time Limit Exceeded
你的程序运行的时间超过了该题规定的最大时间,你的程序被Online Judge强行终止。
注意:
TE(Time Limit Exceeded)并不能说明你的程序的运行结果是对还是错,只能说明你的程序用了太多的时间。一般需要代码优化时间复杂度,相对前景光明。
Memory Limit Exceeded
你的程序运行时使用的内存,超过了该题规定的最大限制,或者你的程序申请内存失败,你的程序将被Online Judge强行终止。
通常算法效率太低,失败,赶紧换方向,优化空间复杂度
注意:
ML(Memory Limit Exceeded)并不能说明你的程序的运行结果是对还是错,只能说明你的程序用了或者申请了太多的内存。
Function Limit Exceeded
你的程序运行时使用我们不允许使用的调用,将会得到此错误,诸如文件操作等相关函数。特别注意:system(“PAUSE”); 也会导致此错误。
Output Limit Exceeded
你的程序输出了太多的东西。
Online Judge规定提交的程序在运行的时候只能输出1024K字节的东西,如果你输出太多,将导致此错误。我们保证所有的题目的标准输出都小于1024K字节。
Runtime Error
你的程序出现了“运行时错误”,严重错误,影响整个系统
平时遇到这类问题的解决方法:
1,终止问题进程(最常用)。2,安装更新补丁升级到最新版本或者重新安装应用软件。3,联系软件作者/开发商。4,扫描病毒。5,重新安装操作系统。6,联系硬件厂商。
就是悲剧
System Error
系统发生了错误。由于异常因素导致系统没有正常运作。遇此情况,请联系管理员,一般重新提交即可,千万别重启电脑。
5. 团队建设
团结第一,平时讨论时应积极提建议,但队长最终决定,队长一定是平时训练和选拔赛成绩最好的,和背景、性别、绩点、领导力神马都没关系。
能力要求:程序设计、英语、数学。
不允许打酱油和搭便车,平时训练和选拔赛,每个人独立提交程序,一个队伍某个人成绩太差很可能被除名,然后重新组队,所以平时各支队伍最好不要有矛盾,虽然现在是竞争关系,但说不定最后就成队友了。
不排除软件学院等队伍参加校外比赛的可能,换句话说,竞争不光是本学院的几个年级的同学。校内赛人家进入前三名,不光打脸,还可能要占我们参赛的名额。
丑话:培训过程高度专业性,高度竞争,绝对公平(OJ是机器人),成功者(参加校外比赛)需要承担一些义务(培训、组织、管理、招新、传承),直到顺利交接。丑话说在前面,做不到的不管成绩多好,都上黑名单。各年级毕业的、没毕业的计算机专业同学都以之为耻。
鸡汤:如果你没有“成功”,并不是你不优秀,勇敢的参加这样绝对正能量的活动本身就是优秀的表现,只是在这样一座最难攀登的山路上落到了90%的人群里,一路上所有相遇的人都很优秀,都是朋友。
潜规则:ACM是三、四年时间的长跑,可以没有节假日,但必须按时作息,打持久战,不熬夜,不影响其他课程的学习。一学期挂科超过两门,停止参赛权利一学期。请所有同学,以及辅导员老师做监督。
个人感悟:ACM修炼的是内功,“功利心”可能让你在长跑中崩溃,ACM需要的是“扫地僧”心态。
6. 程序的控制
例题1: Count the number of words in an English article(统计一篇英文文章单词的个数)
Example:
Input string:(输入字符串)“ Given rising public awarenessand China’s green development drive, the government last yeardecided to phase out and halt such imports by the end of 2019, except for those containing resources not substitutable.”
Output:(输出)there is 33 words\n
短短一个题目,很多坑:
33个单词,因此China’s和2019都是单词,说明单词是包括大小写字母、数字和单引号 '组成的字符串,尤其是单引号,很容易忽略
单词之间的分割可能是空格和逗号、句号
awarenessand :单词之间的空格不止一个
drive, :单词之间的逗号、句号和空格有可能组合在一起
 Given:字符串的开头可能不是字母
substitutable.:字符串结束可能不是字母
类似的题目(简化版)谭浩强教材的例题就有,通常上课老师会讲。但真正比赛时,如此简单的题目,往往浪费大量时间。
同学们纸面练习(10分钟)
下面给出解题思路(搜索,通过控制“游标”在线性数据结构里搜索)和关键代码(略):
1)找到串中第一个字母、数字或单引号,作为搜索起点;
2)外层循环,搜索单词的分割字符:空格,逗号,句号
3)找到单词后面的第一个分割字符,相当于找到一个完整单词,计算器加一
4)内层循环,将连续的分割字符处理掉(难点在内外层循环的衔接)
技术要点:搜索游标的定义和控制,搜索的边界条件、状态表达式、外层循环和内层循环的衔接
核心是对搜索过程的控制。
要求细心、基本功、逻辑清晰、解决局部问题不扩散
以上为第一次辅导内容

补充:ACM的大方向
乱搞(哈希,小模拟,预处理,贪心,枚举,搜索),通常较易,也有难题
dp,难易度变化大,脑洞
图论,较难,常有银牌金牌题
数据结构,难易度变化大,模板好用
计算几何,常有几何压轴题,代码量长
字符串,常常有对应数据结构,有色牌
数论,组合,概率论各类数学,常常融入题目中,单独出现则不是很难就是很简单。
大模拟,通常为银牌之后,强队才会练
以上为基本的大方向,但可怕的是常常出现算法的组合,dp,数据机构,数学常常与其他知识组合出现。许多问题可以转化为图论解决。另外很多偏门,奇怪的知识都能在ACM得到运用。

dp,乱搞,模拟之外的基本都是能够建立模板的,挑选常用的算法封装为好用的模板可以大大增快写题的速度。

个人认为初期的时候可以多训练一些简单的题把握好基本的语言。之后可以找本书入门,再由图论或者dp入手开始掌握一些算法题,因为这两个方向题量充足,ACM中出现频率也高,各个档次的题目都有。然后其他方向的简单算法也可掌握,待到基本没有特别短板可以找自己喜欢的方向深入挖掘。

《代码大全2》可以了解下其中对于代码风格的阐述,写好看代码是件好书。
《挑战程序设计竞赛》入门书籍,代码优美,翻译清晰,好书!可作模板,有语言基础去读。
《算法导论》有志于科研或者了解算法背后机理的推荐,不推荐用作入门或者带去赛场,题好。
刘汝佳系列,入门经典适合无语言基础的,有基础可略过部分,训练指南可用作提高。
《具体数学》各类计算机数学,题好,可用于数学进阶。
余勇系列,哈工大系列,均为套书,强大的模板套装,也可用作学习,进阶用。
各类数学去学习教材即可,《运筹学》《概率论》《计算几何》《初等数论》
各路大牛的代码/博客,挑风格好,代码清晰的,条理清晰的。如ACdreamer 叉姐(ftisach) TankEngineer Petr!

————————————————
版权声明:“ACM的大方向”为CSDN博主「ned_chu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xc19952007/article/details/50544910

ACM菜鸟入门培训1相关推荐

  1. acm-LCY算法入门培训-第0讲

    LCY算法入门培训-第0讲 0. 顺带讲的知识 1. 介绍acm 2. 输入 2.1 第一类:输入时不说明有几个Input Block,以EOF未结束标志 2.2 第二类:说明了做几组 2.3 第三类 ...

  2. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...

  3. Hadoop学习笔记(1) ——菜鸟入门

     Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下.开发分布式 ...

  4. swift菜鸟入门视频教程-03-字符串和字符

    本人自己录制的swift菜鸟入门,欢迎大家拍砖.有什么问题能够在这里留言. 主要内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 ...

  5. python菜鸟工具-终于清楚python菜鸟入门教程

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python菜鸟入门教程 环境配置:下载Python并安 ...

  6. 数据库编程入门培训(二)

    本文为数据库编程入门培训的第二讲,主要讲述一下数据库编程具体怎么实现.示例代码在本文后面的附件中可以下载. 如上篇文章所描述的那样,由于Microsoft Access数据库比较直观,适合初学者入门学 ...

  7. 记一次Spring boot 和Vue的前后端分离的入门培训

    记一次Spring boot 和Vue的前后端分离的入门培训 由于公司之前是写C#的,现在要转 Java分布式 + vue,所以进行一次前后端的简单培训. 前端工具和环境: Node.js V10.1 ...

  8. python主函数入口_Python 入口函数(菜鸟入门)

    Python 入口函数(菜鸟入门) 最近在组内研究专项项目,其中的一个现有工具是用 Python 开发的,我的目标是对这款工具的流程进行优化.虽然可以找到对应的开发者了解现有流程,然后结合我的研究提出 ...

  9. 第十二节 VMware View 6.0 菜鸟入门 部署和安装2008 R2 RDS服务

    第十二节 VMware View 6.0 菜鸟入门 部署和安装2008 R2 的RDS服务 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.http ...

最新文章

  1. 内存对齐/字节对齐/数据对齐/地址总线对齐
  2. 更换YUM及升级包方法
  3. java returnaddress_Java虚拟机规范】Java SE 7虚拟机结构
  4. Unity MeshRender更换材质球方法
  5. 关于json时间字符串格式化处理
  6. Codeforces 988D Points and Powers of Two 【性质】【卡常】
  7. SecureCRT 绝佳配色方案
  8. JAVA多线程实现案例
  9. 电路分析之正弦稳态电路的仿真与研究
  10. 为地图marker 设置网络图片
  11. true launch bar 和 editplus
  12. Happy Programming Contest(01背包)
  13. 关于Could not find method javacompileOptions() for arguments
  14. 【show me the code】Python练习题语法笔记 1
  15. Moss 自定义Featur
  16. 伦敦旅游必玩的密室逃脱体验——《神探夏洛克:官方现场游戏》
  17. HGAME 2023 Week1
  18. MRCP 媒体资源控制协议
  19. 2022CTF培训(一)脱壳技术Hook入门
  20. windows10 修改用户名全局生效--最有效快速的办法

热门文章

  1. 阿里云ECS_Linux服务器解决蠕虫病毒MinerGuard
  2. Windows用户及组管理
  3. 如何做好模型设计环节
  4. 一文搞懂布尔代数基本逻辑运算
  5. ZJW系列之简单密码
  6. Vue2使用vant实现_网易云音乐案例(可跟做练手项目)
  7. 互联网慢病管理-软件架构设计
  8. mock模拟数据,get、post请求
  9. 使用shell脚本监控程序的运行和停止
  10. 注册域名需要资格吗_注册域名的条件是什么 注册域名需要了解哪些