ACM编程队训练记录(一)

身为学校acm队的队长,对上个学期的训练做一下记录。本次训练针对的是大一新入学的学生,没有相应的编程基础,因此本次进行基础的编程教学。本次记录的训练时间为2019年10月19日

ACM介绍

国际大学生程序设计竞赛(英文全称:International Collegiate Programming Contest(简称ICPC))是由国际计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近40年的发展,ACM国际大学生程序设计竞赛已经发展成为全球最具影响力的大学生程序设计竞赛。

比赛总共有几个部分:区域赛的网络选拔赛,区域赛的现场赛,亚洲区比赛和全球总决赛。
通过网络选拔赛可以获得对应区域现场赛的名额,区域赛之后获得金奖才可进入下一级别的比赛。

ICPC的含金量相对较高,国内许多大公司多比较看好本比赛的奖状与证书,如果能够拿到一个比较不错的名次,也是对自己编程能力的一个很好的证明。

评分情况

题目提交情况

竞赛进行5个小时,一般有7道或以上试题,由同队的三名选手使用同一台计算机协作完成。当解决了一道试题之后,将其提交给评委,由评委判断其是否正确。若提交的程序运行不正确,则该程序将被退回给参赛队,参赛队可以进行修改后再一次提交该问题。程序判定结果有如下7种:

  1. Accepted. ——通过!(AC)
  2. Wrong Answer.——答案错。(WA)
  3. Runtime Error.——程序运行出错,意外终止等。(RE)
  4. Time Limit Exceeded. ——超时。程序没在规定时间内出答案。(TLE)
  5. Presentation Error. ——格式错。程序没按规定的格式输出答案。(PE)
  6. Memory Limit Exceeded. ——超内存。程序没在规定空间内出答案。(MLE)
  7. Compile Error. ——编译错。程序编译不过。(CE)

比赛排名计算

竞赛结束后,参赛各队以解出问题的多少进行排名,若解出问题数相同,按照总用时的长短排名。总用时为每个解决了的问题所用时间之和。一个解决了的问题所用的时间是竞赛开始到提交被接受的时间加上该问题的罚时(每次提交通不过,罚时20分钟)。没有解决的问题不记时。

例如:A、B两队都正确完成两道题目,其中A队提交这两题的时间分别是比赛开始后1:00和2:45,B队为1:20和2:00,但B队有一题提交了2次。这样A队的总用时为1:00+2:45=3:45而B队为1:20+2:00+0:20=3:40,所以B队以总用时少而获胜。

比赛工作语言及编程语言

美国英语为竞赛的工作语言。竞赛的所有书面材料(包括试题)将用美国英语写出,区域竞赛中可以使用其它语言。总决赛可以使用的程序设计语言包括pascal,c,c++及java,也可以使用其它语言。具体的操作系统及语言版本各年有所不同。常用的操作系统为Ubuntu,最近几年也开始增加python语言进入比赛程序设计语言。

判题系统

IPCP竞赛的系统一般都是Online Judge系统
Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++、Pascal)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。

在各大高校都有都有建立自己的OJ来进行校内的培训和练习。比如:北京大学的POJ,浙江大学的ZOJ,还有华中科技大学开源的HUSTOJ

编程软件

常用的编程软件:

  1. 轻量级的编程软件 dev-c++ 开启迅速,软件本体小
  2. 功能全面的编程软件 vs2017 软件本体大,但是可以加载的功能多,同时可以编写多种编程语言。
  3. jetbrain公司出品的编程软件 clion jet brain公司有一系列的编程工具,但是他需要一个注册码来进行激活,相对的你也能使用edu邮箱进行学生申请来获得免费的使用权。
  4. code::block 竞赛常备的编程软件,一个开放源码的全功能的跨平台C/C++集成开发环境

基础编程讲解

本处编程主要时针对c++/c语言进行讲解。

编程格式

要进行编程,首先就要了解编程的基础格式。

#include<iostream> //此处为基础头文件的引入

using namespace std;//此处为名字空间的使用

int main(){  //此处为主函数的开始

	return 0;//此处为主函数的返回值,一般使用0作为主函数的返回值
} //主函数结束

上面就是基础的格式,接下来就进行基础的讲解。

头文件

在开始进行编程时,你需要使用引用(include)来调用相应的函数库,这些函数库里存储了你再编程过程中需要使用的基础的编程语句。
头文件一般分为两种形式:
1、使用尖括号进行引用的c++内置函数库
比如:在例子中使用的iostream的内置库
io指的是出入输出的in-out,stream则是指数据流。
同时还有其他的库,如数学库math、字符串库string等等、

#include <iostream>
#include <string>

2、使用双引号进行引用的自定义函数库
像一些以h、hpp作为文件后缀名的文件,但是这些文件是我们自己编写内容的,里面存放了咱们自己需要使用的一些方法,就像你在vs软件中创建项目时,如果选择创建工程项目,你会看到头文件里面用双引号引用了一个h结尾的文件。

#include "pch.h"

名字空间

这个名字空间的引用,是用来区分的。在咱们进行编程的时候,会经常把大部分的相同的代码进行打包,抽取出来写成一个函数一次来减少函数的,但是在给函数进行命名的时候,可能会出现重复,这样就没有办法让电脑去区分你调用的究竟是哪个一个方法。因此出现了一个名字空间来进行区分。

比如c++中常用的输入输出cin和cout,如果在没有引用std名字空间时需要写成

std::cin>>a;
std::cout<<a;

但是,引用了std名字空间后,就是默认先调用std空间内的函数,可以直接写成

cin>>a;
cout<<a;

主函数

每一个程序中,可以进行执行的函数只有一个主函数main,并且也只能够写一个主函数。

而在c++中,每一个函数都会需要一个数据类型,并且要有一个返回值。

数据类型有许多种,比如整数型int,浮点数型float,字符型char,在此 我就不一一赘述,大家可以自己通过网路搜索进行了解。

咱们一般写成主函数的就是int型,这样也是便于咱们的竞赛系统进行判断。同时返回值0,也都是默认的,方便系统进行编译。有时可能你再一些平台上进行练习时,不需要写上 这个return 0,也可以进行编译,但是,为了以防万一系统不进行识别,也为了严谨,最好还是写上这个返回值。

总结及作业内容

本次培训讲解的内容仅仅是针对初学者,讲解的是编程的基础结构,希望大家能够对于这些基础内荣多家理解,自己尝试着写一些小程序。

作业

  1. 编写一个程序进行基础的输入输出
  2. 编写一个程序按照后面给出的顺序输出相应的数据类型,整数,浮点数,双浮点数,单个字符,布尔值。
  3. 自己了解下次培训讲解的运算符和基础的逻辑结构。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值