牛客网acm模式需要自己写输入输出么 牛客网acm模式

hello大家好呀,我是小楼。

上周参加了一个区的程序员技能比赛的初赛,其实就是算法比赛,虽然最后结果是过了初赛,但过程真是一言难尽啊。

这次的算法比赛和ACM非常类似,虽然我大学是数学专业,虽然大学也修过ACM这门课,但是我的算法是真的不行,很菜很菜的那种。

牛客网acm模式需要自己写输入输出么 牛客网acm模式

好在这次比赛是组(抱大腿)队模式,3人一组,3个小时时间,一共7道算法题,1入门,2简单,2中等,2困难。

10分钟写出入门题,但…

由于我知道我比较菜,所以比赛一开始,我就挑了一个看起来最简单的题目做,难题交给队友。

结果是3个小时过去,这个看起来最简单的题目,愣是没有做出来,下面就结合这道题讲讲我的心路历程。

这道题的描述是这样的:

牛客网acm模式需要自己写输入输出么 牛客网acm模式

看起来文字很多,其实要表达的很简单,就是输入一些成绩,每个成绩输进去时,如果超过全班最好成绩则输出prefect,如果超过自己的最好成绩则输出great,如果没超过自己最好成绩则输出bad。

是不是很简单?用一个max变量保存全班最好成绩,用一个map保存每个人的最好成绩,不就解决了吗?

不过这是我第一次用这个oj系统,连用户都是刚注册的,所以我还特地看了一会输入输出的demo,这次比赛只能使用ACM的输入输出模式,例如如果用的是Go语言,输入输出应该是这样:

牛客网acm模式需要自己写输入输出么 牛客网acm模式

当一些key存入map时,会先对key计算hash值,在map中找到对应的hash槽,这个槽之后一般是个链表(有的语言也会做一些优化成树状,这里我们简化为链表),因为不同的key的hash值可能会重复(冲突),冲突了只能把key排成一个链表,每次查找时都要遍历链表。

所以有没有可能,设计者给出了一堆hash值重复的name,数量又多,导致每次插入、查找时都要遍历链表,性能下降,导致超时?

于是再仔细审题,我发现输入的姓名和成绩是有限制的:

name保证长度不超过6,仅由小写英文字母组成,每个名字代表唯一一个同学

x为1位小数,0≤x≤300

name最长为6,且为小写字母,这点给了我一点启发,能不能让查询map变成O(1)复杂度?

显然可以的,小写字母范围为a~z,如果看成数字就是1-26,也就是27进制,所以每个name可以表示为一个27进制的数,这样就可以把所有人的成绩放到一个大数组里去,按name的27进制进行O(1)的查找。

为什么是27进制而不是26,因为name没说是多少位,比如只有5位,那空出的一位怎么表示?只能用0表示了,a-z就是1-26,合起来是27进制。

参考10进制计算法则,27进制应该这样计算(以roshi为例):

牛客网acm模式需要自己写输入输出么 牛客网acm模式

结果竟然报错了,我当时不理解,事后理解了,我们暂且不说,后面会说到原因。

就是因为这个报错不明不白,明明能测试通过,到底哪里理解有偏差?亦或是内存超了?

优化内存占用

上面的代码用到了2个数组,一个存最大值,一个存值是否存在,一个数组是1513361KB,2个就是3026722KB,是最大内存限制的5.7倍

var scores [387420488]int32var exist [387420488]int32

exist数组可以用boolean类型,分数最大值0<=0<=300,int16足矣

大小 范围 int8 1字节 -128 ~ 127 int16 2字节 -32768 ~ 32767 int32 4字节 -2147483648 ~ 2147483647

如果是这个组合,将占用 1135020KB,是上限的2倍多,还是有点超,先试试:

牛客网acm模式需要自己写输入输出么 牛客网acm模式

还是一样,难道是我算法有问题?没道理啊。到这里我实在是没招了,3小时也耗尽了,比赛结束。

赛后思考

赛后,我拿着这道题去找了一位刚入职字节的朋友,想着刚去字节应该刷过不少题吧,果然大佬就是大佬,给出了一个有新意的思路,用前缀树做:

牛客网acm模式需要自己写输入输出么 牛客网acm模式
最后

过程虽然曲折,但最终还是解决了这个入门题,而且还尝试着用几种方法来解,虽然不尽如人意,但终究还是有点收获。

当然我们组的小伙伴也很给力,做出来3道题,我们最终的成绩是排名进了前10%,虽然我只贡献了一点点(没完全做出来也有得分,按通过的用例算,我这题大概拿到了90%的分),也算是可以了,而且还有一道题也可能是因为这个输入被卡了,所以如果这两道卡的题都做出来,估计排名能进前三。

初赛算是过了,接下来准备复赛,如果复赛还有好玩的事情,我再来写一篇文章,哈哈。

这一言难尽的比赛,大家给个赞鼓励下吧。

搜索关注”捉虫大师”,后端技术分享,架构设计、性能优化、源码阅读、问题排查、踩坑实践。

本文来自投稿,不代表展天博客立场,如若转载,请注明出处:https://www.me900.com/174214.html

(0)

相关推荐

  • 开服装店的流程和准备,差异化商业模式的特点

    很多人开店都开了半年到一年了结果发现自己店铺的选址都错了!把低端品牌开到了中高端的路段或者把中高端品牌开到了低端的路段,年自己的客群在哪里都不知道更不要谈差异化的商业模式了!为了让大家避坑开店一定要做到一下两点: 一,做好竞品分析。 在你要想开店的商圈范围内选择一家你想开店风格差不多的品牌做为调研对象(一定是做的好的品牌) 对调研品牌的商品风格定位,服装的消…

    2023-06-09
  • 炖牛肉怎么做才嫩秘诀,如何做出美味可口的炖牛肉

    炖牛肉时,牢记“2放3窍门”,牛肉软嫩鲜香不塞牙,熟烂又入味。大家好,我是水墨尚食,今天跟大家分享炖牛肉的技巧,感谢你的阅读。 牛肉是生活中常食用肉类之一,其销量仅次于猪肉,享有“肉中娇子”的美誉,其蛋白质含量高,脂肪含量低,且氨基酸组成比猪肉更接近人体所需,因此深受人们的喜爱。小雪过后,有些地方已经下雪,天气寒冷,因此会多吃肉类给身体提供能量,而吃牛肉是很…

    2023-06-17 创业杂谈
  • 品牌护肤品排行榜前十名,新碧小蓝瓶防晒霜成分表

    1、兰蔻小白管防晒霜试用体验 防晒对于我来说真的是非常的重要!但是买了防晒要不然就是防晒效果差,要不然就是闷痘,真的很烦,型号找到了这个小白管防晒,真的很喜欢! 它的防晒力真的很好,拥有高倍防晒,日常出门不管是涂在脸上还是涂在身上都简直是绝绝子,再也不用怕被晒黑! 这款防晒是物化双向防晒体系的,全波段的防晒可以让紫外线通通消灭,再也不用怕被晒黑了。 &nbs…

    2023-06-17
  • 淘宝30天质保怎么申请?淘宝质保期是从什么时候开始

    淘宝为了提升消费的购物体验,部分商品是有7天无理由退换服务的,有的商品为消费者提供了30天质保。对于淘宝30天质保的商品,消费者应当如何申请? 消费者可通过“已买到的宝贝”-“退款/退货”或“申请售后”-选择退款原因“开线/走丝”或“缩水/褪色”(男/女装类目商品)、 “质量问题”或“做工问题”(男/女鞋类目商品)发起“30天质保”服务申请。 若商家拒绝履行…

    2023-02-05
  • 生活超市怎么加盟店,如何加盟超市流程

    各行各业的如火如荼让生活超市的发展形势一片大好,其中各类生活超市一经上市,就吸引了广泛的消费者,同期自然也吸引了不少的加盟群体,那么面对类似的情况应该如何考虑加盟生活超市呢? 对于正规的超市加盟品牌来说,不是随随便便就可以加盟的,必须经过彼此的沟通了解后再行商定。一般来说,如果你想加盟某个超市品牌。可以通过门店、公司总部、网络搜索等方式,来找到相关联系方式,…

    2023-06-13
  • 越南的美女愿不愿意到中国来

    在越南,很多年轻女性梦想着到中国寻找更好的生活和经济机会。以下是一些可能导致越南女性喜欢嫁到中国的原因:   1. 经济机会:由于越南是一个相对较贫穷的国家,许多女性在寻求更好的工作和收入方面遇到了困难。中国是世界第二大经济体,拥有大量的就业机会和经济机会,这使得越南女性认为他们可以在中国找到更好的未来。   2. 文化共同点:越南和中国…

    2023-05-29 创业杂谈
  • 怎么设计界面,界面设计的流程

    一款App应用的进一步流行,首先是取决于市场的定位,其次是产品品质,第三是营销手段。任何App研发团队都会将80%的注意力集中在产品本身。如果定位和产品俱佳,即使没有什么营销能力的App也会脱颖而出。   所以,在这个阶段UI视觉设计师的工作就是了解用户的特征,定义出最终的用户群,同时确定产品的方向和运动方式等。只有定位在目标人群高度集中的区域,才…

    2023-08-29 创业杂谈
  • 怎样加盟海底捞火锅分店,如何加盟海底捞火锅分店

      一个从海底捞走出来的“小学生”,从2万元开始创业,一路发展,至今全国各地已有600余家店疫情后,为了应对市场的不确定性,越来越多直营餐饮连锁品牌开放加盟,像周黑鸭、嘉和一品等。     但有这样一个餐饮老板,如今却要逆势而行,放弃加盟全面做直营! ▉来源于网络-大斌家串串火锅   他就是大斌家串串火锅创始人大斌,他…

    2023-07-19 创业杂谈
  • 适合负债者的10个副业(副业做什么比较靠谱)

      如今人们生活压力都很大,很多人为了生活条件能够好一点,都会选择一份副业。特别是家里不富裕还负债的朋友就更加需要一份好的副业,不要做没用的投资,那么适合负债者的10个副业(副业做什么比较靠谱),小编带大家来了解一下吧。   1、自媒体写作        如果你文笔好,可以给很多自媒体账号投稿,从中赚取稿费。   2、…

    2023-04-11
  • 应用商店优化知识(应用宝aso优化)

    作为一名已经干了三年测试的资深测试工程师的我,因为一夜之间,受高人指引,发现自己不适合做技术这个行业,于是分分钟转行做渠道推广。大家都知道做APP推广的,怎么能不知道ASO是什么。于是我入门的第一课,就是学习好安卓ASO。而究竟什么是安卓的ASO呢? ASO这个词的含义是:App Store Optimization,就是提升你APP在各类APP市场排行榜和…

    2023-02-03
  • 童装加盟网,开店卖童装怎么样赚钱

    人人都想创业自己当老板,可创业道路非常多,开店卖童装怎么样呢?要知道开店卖童装怎么样?您可以从童装的市场需求出发。小编要强调的是,想要一直站稳市场,最重要的还是需要选择一个好的品牌进行投资。 据了解,国家统计局相关的统计数据表明,2011年,我国0-14岁儿童及少年已有2.22亿人,结合国人均消费情况预测我国的童装消费规模已经高达1500亿元,高端童装市场的…

    2023-06-11
  • 电信魑魅流量卡办理(电信29元无限流量卡办理)

    2019年11月15日凌晨3时许,刚刚迎来入冬初雪的吉林省省会长春,两架民航客机刺破夜幕,先后降落在龙嘉国际机场,在停机坪等候战友凯旋的吉林省公安厅刑侦局局长岳喜田,长春市公安局党委委员、副局长刘省伦等领导和有关城区公安分局负责同志走上前,向从弦梯走下来的全副武装的英雄战友们敬献鲜花,同他们紧紧握手…… 2019年5月份以来,长春市多个城区连续发生以“杀猪盘…

    2023-05-24