栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【2021-10-24】第一次ACM校赛

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【2021-10-24】第一次ACM校赛

第一次ACM校赛
  • 一、报名
    • 1.去年比赛
    • 2.流程
  • 二、准备
    • 1.核心代码模式和ACM代码模式
      • 1.1核心代码模式
      • 1.2 ACM代码模式
    • 2.往年题目
    • 3.机房环境
      • 3.1语言
      • 3.2复制粘贴
      • 3.3陌生的计算机
    • 4.了解一些术语
    • 5.考试须带
  • 三、比赛心得
    • 1.先易后难
    • 2.签到题拿稳
    • 3.乱蒙的一题
    • 4.沉浸式体验
    • 5.DevC++控制台 CV不了
    • 6.两道没做出的题目(记录)
      • 6.1时间(HH:XX)(范围00:00~23:59)
      • 6.2涉及求多个数的最小公倍数

 

一、报名

 

1.去年比赛

参赛动机:去年我大二转专业过来后,新班级的同学就有在参加。而我那个时候大概还在机器人技术和程设艺术方法里挣扎,甚至看不懂C++。
参赛人数:去年参赛人数109,今年爆满达到了400+。
拿奖难度:校赛拿奖看样子不难,共8~12题,去年三等奖最少做出了1题,二等奖最少做出了2题,一等奖最少做出了4题。总有签到题吧,也许努努力可以,我是这么想的。
 

2.流程

群内现状:大佬“打架”,如果你不喜欢水群,会觉得有点吵。
报名流程:加群 -> 提交报名表 -> 短信提醒参赛 -> 一次模拟 -> 群文件查看考场 -> 机房参赛

 
 

二、准备

 

1.核心代码模式和ACM代码模式 1.1核心代码模式

如果你刷过LeetCode,我就不必多讲了,就是你不必关注输入输出,你只需要看清楚题目所给核心函数的参数和返回值,在函数里写核心代码即可。

1.2 ACM代码模式

我也是刚接触OJ(online Judge)和CodeForces。需要自己输入,自己输出,答案也是根据输出来判定。
给个例子:我甚至前一周还不知道怎么把这种数据输入…(借口就是平时都是LeetCode在刷,输入输出用的不多,能力退化了)

cpp代码大约长下面这样:

#include 
using namespace std;
typedef long long ll;

const int N = 510;
int n;
ll a[N];
ll ans;

int main() {
	cin >> n;
	for(int i = 1; i <= n; ++i) 
		cin >> a[i];
}

注:你可以由此一窥ACM追求的是速度(比如全局变量,和一些define的预先设置),真的很残暴,甚至不美观。

 

2.往年题目

群文件里有。题型、输入输出格式、思路值得借鉴,甚至打印带入机房。

 

3.机房环境 3.1语言

DevC++写C++;
Eclipse写Java。
这两种语言是主流。

3.2复制粘贴

我这次DevC++写的时候出了点小问题。
比如输入样例复制到剪切板后,无法粘贴在控制台(粘贴后只显示^V,因为我是用Ctrl+V粘贴的),
所以后面测试跑代码的输入样例我都是手敲的。

3.3陌生的计算机

这一次让我有机会不用自己的PC,在一台陌生的电脑上敲码。会发现自己其实还不是很熟悉这些IDE。
(1)比如用Eclipse新建的Java Project,我也许一不留神就没注意到保存到哪个目录下了,所以自始至终也没怎么敢用.
(2)比如我忽然想用Java试试写写,会发现Eclipse 没有缩写补全 的功能。(需要在工具栏里什么Properties设置,但我记不太清楚,就懒得去弄了)遂放弃。
(3)比如即使我把Java代码写好,复制粘贴提交时候,我是复制整个class还是怎么?是不是要把package都删掉?
(4)比如C++头文件那些我都懒得记了,这次投机取巧写了万能的#include (这是我选C++的另一个原因)

这些不确定性,都在正式考试时候成了我把这条路剔除的一个导火索。
所以,凡是你用的上的,都是你确定的。

 

4.了解一些术语

 

5.考试须带

(1)学生证
(2)草稿纸&笔
(3)水
(4)键鼠(我这次带了鼠标和鼠标垫,键盘我觉得没那么必要)
(5)打印资料(往年题解,输入输出模板,或者数据结构模板)

注:吃的也可以带,我这次带了,但没什么吃的欲望和时间。一点到六点,也不会太饿吧???

 
 

三、比赛心得

 

1.先易后难

(1)文件夹分类
这次我用DevC++写C++代码,在桌面新建了stu215文件夹(我的考生号),里面一题一个文件夹(A、B、C、D…)
后来发现不需要,命名时候整上题号就行,一题你是不会想写多个代码的。
除非你是一条路走不通想走另一条,还怕自己回来继续走这条的…(菜鸡我啊还没到这种境界)
(2)每题思路
看一题,可能题目背景有好多废话。从输入样例的参数看起,看题目的核心意思。
在草稿纸上写写思路:
比如我很容易看出某题考验的是数学的排列组合,又或者某题其实思路很简单,我就会开始分析,然后敲码试着提交。
(3)Problems
在Problems页面,你可以看到各题提交数,各题AC(Accepted)的人数和比例。
你就可以大致判断难易了!先做哪题的选择也就慢慢清楚了!
 

2.签到题拿稳

这次签到题有两道。(签到题就是简单题,大佬们不屑一顾的题)
(1)一道思路简单,甚至我在写复盘时候已经忘了是什么了。
(2)另一道就是原样输出,读取一行话,原样输出。
原样输出这个,我自己…还真不会。所幸打印了C++的输入输出模板,看着里面的字符串输入输出,胡乱试错,慢慢摸索出了正确答案。
 

3.乱蒙的一题

这题是摩尔庄园那道。
思路分析清楚后,其实关键代码就在一个ifelse的分支里,解决了半天都是WA(WrongAnswer)。
最后横下心,枚举,多写几个样例和对应答案找规律,一试,AC!
我靠,我当时直接在草稿纸写了大大的卧槽,九九归一啊这是。 第一次觉得AC这么好看~
 

4.沉浸式体验

我可是从一点坐到六点。emm也没有太枯燥,看到AC时候还是很激动的。
机房外堆满了气球,你每完成一题会有监考学生给你座位上贴一个气球。
 

5.DevC++控制台 CV不了

靠,控制台输入不能CV时候我整个人愣住了,还是含泪手敲了。
 

6.两道没做出的题目(记录)

除了做出来的三题,还有两道我呼之欲出(给的输入样例全部通过,但有情况没考虑到所以WA),在此记录。

6.1时间(HH:XX)(范围00:00~23:59)

这个其实考验思路有没有想完全以及边界情况的讨论。

  1. 比如ab:cd
    如果a是0或1,那么b最大可以取9
    如果a是2,那么b最大只能是3.
  2. 比如ab:cd ~ ef:gh
    如果a和e都没有确定,那么可以必须设置好两者距离,使得这个区间的时长最够小,同时需要考虑bcd和fgh满不满足了:
    比如?7:00 ~ ?8:00,a和e同时为0或1都能使得间距最小
    再比如?8:00 ~ ?700,只能是08:00~17:00这种才符合。
    挺繁琐的其实,我好像确实没有考虑全,所以没过。
6.2涉及求多个数的最小公倍数

我恨自己没留意过最小公倍数的代码。我的最后思路如下:

  1. 求4,2,6的最小公倍数
  2. 首先vector存储后sort,变为:2,4,6
  3. 结果初值res=1,遍历vector
    ① if(res%a[i]==0) continue;
    ②if(a[i]%res) res=a[i];
    ③*上面两个都不满足,比如res=4,a[i]=6时

我找到的规律是:最小公倍数 = 两者乘积 / 最大公约数。比如:12 = 4*6/2
我写了个gcd函数,计算最大公约数。最后题目输入样例和我自己编的例子都没有问题,但是没过,郁闷。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号