牛客网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%的分),也算是可以了,而且还有一道题也可能是因为这个输入被卡了,所以如果这两道卡的题都做出来,估计排名能进前三。

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

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

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

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。

(0)

相关推荐

  • 同城送货哪个平台又快又便宜,排名前十的送货app

    现如今,随着生活方式的改变,人们也渐渐习惯通过网上平台来采购日常的生活用品以及蔬菜水果等食物,但是网上的同城送货平台太多了,价格定位又不一样,着实令人眼花缭乱,那么同城送货哪个平台便宜呢? 1、达达 达达-京东到家是国内的同城快送信息服务平台和生鲜商超O2O平台。同城快送信息服务平台“达达”目前已经覆盖全国360多个重要城市,拥有300多万达达骑士,服务超过…

    创业杂谈 2023-04-05
  • 强制停贷是什么意思(为什么停贷)

    最近房地产圈子确实热闹,全国大范围的业主强制停贷,老百姓为了及时止损,不再给开发商的烂尾楼买单,也不再给银行按揭了。想想倒也无可厚非啊,毕竟上半辈子攒的首付被掏空了,下半辈子还要给银行做长工,说好的房子变成了烂尾工程,换谁也都接受不了啊。不过大家冷静下来,仔仔细细地捋顺一下这些年的房地产市场,看看每个时间节点出现的事件,里面是不是有些规律呢,从来就没有空穴来…

    创业杂谈 2023-01-30
  • 当女兵好吗,女兵可以成为一个职业吗?

    每年征兵时我们看到最多的就是男兵的身影,殊不知每年也有不少女生愿意投身军营,报效祖国。她们在训练中丝毫没有任何优待,也不会因为自己是女生就很娇气,反而不少女兵比男兵还要厉害,我们都知道男兵退伍后出路有很多,那么女兵退伍后有哪些工作可以从事呢? 首先像部队里面的女仪仗兵或者是本身在部队中就从事文艺工作的女兵,她们退伍后就主要从事自己的老本行,现在社会上也有不少…

    创业杂谈 2023-05-19
  • 漫威所有超级英雄的能力,漫威中国超级英雄

    众所周知,漫威的超级英雄们往往都有着强大的超能力。但是也有一些超级英雄仅仅是普通的人类,并没有什么超能力。虽然这些超级英雄没有什么超能力,但是仍然不妨碍他们成为战斗力爆表的超级英雄。今天小编就从这些没有超能力的超级英雄中选出了10个,大家来看看都有谁吧! 1.艾丽卡 艾丽卡原名艾丽卡·纳奇斯,在原作的设定中是一名希腊外交官的女儿,职业杀手,超胆侠的前女友。她…

    2023-07-20 创业杂谈
  • 市场调查赚钱,填问卷赚钱注意个人信息

    市场调查问卷赚钱这个赚钱项目已经是一个非常古老的赚钱项目了,说起来市场调查赚钱算是一个很不错的网络兼职赚钱项目。 为什么说是兼职呢? 因为这种项目纯属就是靠体力赚钱,靠时间赚钱,并且赚取的收益十分有限,不能达到倍增积累的目的。 虽然这种项目展天博客不愿意去操作,但是很多大学生宝妈等群体想在网上兼职赚取一点收入也是可以的。 毕竟这也算是一个正规的兼职赚钱项目。…

    2020-01-26
  • 补水面膜排行榜10强,补水保湿面膜哪款好

    面膜的基础护肤功效是皮肤补水,这对于皮肤而言也是非常重要的护肤方式之一。不过现在面膜的护肤功效越来越丰富,也开始逐渐向着功效护肤领域迈进。你知道市面上哪些面膜补水紧肤效果好吗?小编今天给各位型男美女盘点出保湿抗衰老面膜排行榜,上榜的品牌依次为:悦蕾、SK-II、蔚蓝之美、赫妍、宠爱之名、DHC、碧欧泉、嘉媚乐、Dr.Jart+、肌美精,现在就跟随小编一块来看…

    2023-07-27 创业杂谈
  • 饭店装修效果图片大全,餐饮店面装修要求

    如果没有餐馆装修的经验,可能会问是否麻烦?那今天我们就来说说餐馆装修需要考虑哪些问题?餐馆装修不光要考虑餐馆的电路装修、墙面装修、地面装修以及吊顶安装的问题,还需要提前考虑好餐厅的装修风格,装修色彩,软装搭配等等问题,具体要怎么弄呢?下面跟跟小编一起来看下吧. 餐馆装修首先要考虑的是,餐厅的装修风格,因为对于餐厅来说装饰和设计是一件非常繁杂的事情,但是俗话说…

    2023-07-25
  • 适合乡镇开的加盟店有哪些?2022年十个最佳乡镇开店项目

      之前,乡镇是比较落后的地区,但是随着现在国家的强大起来,也是非常重视乡镇的发展,非常提倡乡镇自主创业,近几年创业的恶人越来越多,乡镇发展越来越好,现在一些人想加入,可是不知道哪些项目适合乡镇创业,今天小编就分享几个项目给大家吧。希望能对你们有帮助。   适合乡镇开的加盟店   1、干洗店   即便在乡镇,也有不少社区人均消费水平是比较高的,在这样的社区附…

    2023-03-29
  • 胃疼怎么缓解最快方法,女生胃疼快速止疼方法

    众所周知,胃疼是一件非常难受的事情。如果胃疼非常严重,还容易引起恶心呕吐等症状出现,没有办法集中注意力工作以及学习。一般来说,造成胃疼出现的主要原因就是饮食方法不正确,或者吃了太多辛辣刺激的食物造成的,因此一定要积极解决。那么,快速缓解胃疼的方法有哪些呢?   快速缓解胃疼的方法有哪些呢? 一、吃一些东西 身体很饿的时候胃疼情况就会出现,这个时候就…

    2023-08-27
  • 加盟什么店最赚钱(蜜雪冰城的黑历史)

    疯狂大跃进 最近两天,靠着一个看似普普通通的“黑化”梗,“营销老手”蜜雪冰城又一次出了圈。 按常理,传统意义上的“黑化” 应该表现在性格或精神状态上的转变,但既然要玩梗,“黑化”的意思就得变一变——蜜雪冰城门店logo上的“雪王”形象,实现了物理意义上的全部“变黑”。 (图源/蜜雪冰城微博) 当热度起来后,蜜雪冰城趁机揭秘,雪王变黑是因为“去桑葚园摘桑葚被晒…

    2023-05-28 创业杂谈
  • 网站更改为网络创业博客

    思索再三,还是决定修改了网站标题和栏目。 毕竟想要长久的发展下去关键词擦边始终是不可取的,之前的备案使用了几年一直没问题,最开始运营这个博客的时候因为关键词的问题导致备案被注销,毕竟当时网站才刚刚上线,不适合大规模修改。 又封搜索引擎处理擦边关键词,详见:网赚等相关关键词被“清场”,隔一段时间就会出现一次问题也不是事儿。 本来网站获取流量都不是靠首页关键词来…

    2020-12-02
  • 监控离线了怎么重新连接(天翼监控离线了怎么重新连接)

    《杭州市城市轨道交通管理条例》第六十二条第二项 违反本条例规定,作业单位和个人有下列行为之一的,由建设、城市管理等部门按照各自职责责令改正,处二千元以上二万元以下罚款;情节严重的,处二万元以上二十万元以下罚款:(二)未按照要求编制城市轨道交通安全防护方案,或者未按照经城市轨道交通建设单位或者运营单位认可的城市轨道交通安全防护方案施工的。施工单位挖断地铁电缆的…

    2023-05-24