牛客网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)

相关推荐

  • 餐饮行业组合营销(组合营销理论)

    火锅是餐饮行业的重要组成部分。火锅市场在我国一直非常火爆,火锅店出售的产品基本上是标准化的,可以在全国各地迅速复制,再加上消费者的喜爱,火火锅市场增长潜力非常大。 我国居民的收入和消费水平不断提高,越来越追求生活的品质,在饮食方面从最初的“吃的饱”到现在的“吃的好”,越来越注重品质和质量。 所以,对餐饮企业来说,要做好品质,提高消费者的消费体验,对餐饮企业来…

    2022-11-11 创业杂谈
  • 奶茶十大品牌,如何选择最佳奶茶品牌

    新茶饮行业正处于持续增速阶段。近日,中国连锁经营协会发布《2022新茶饮研究报告》(以下简称报告)显示,2022年新茶饮市场处于成熟期上半段。2022年年底在业的新茶饮门店总数约48.6万家,截至2022年10月底,蜜雪冰城以23295家门店数位居第一;古茗居第二,门店数为6778家。新茶饮行业的市场格局逐渐明朗,新茶饮品牌头部效应明显。 此外,2022年新…

    2023-06-07 创业杂谈
  • qq怎么拉人进群 怎样拉人进qq群

    随着在线交流的不断发展和人们社交方式的变化,QQ群已成为人们交流和沟通的一个重要渠道。那么,在这样的社交背景下,如何通过QQ拉人进群?本篇文章将从QQ群邀请方法、利用朋友圈、QQ空间和微信等社交渠道、QQ用户群体的心理特点、营销策略和在虚拟世界中的社交等四个方面阐述如何拉人进QQ群。 正文: 一、QQ群邀请方法 首先,我们要掌握正确的QQ群邀请方法,合理地邀…

    创业杂谈 2023-05-23
  • 纯流量卡没激活(短视频流量带货骗局)

    现在的流量越来越不够用,但是三大运营商对于老用户的资费却一直居高不下,就算是最便宜的套餐,每月至少都要花四五十元,流量几乎都是个位数(各地运营商有所区别);若是想办5G套餐,更是动辄上百元,流量也只有二三十GB,根本不够用。 正因为如此,在电商/短视频平台上出现了不少的“流量卡”,月租只需要十几二十元不等,流量大多都是几十甚至上百GB,这可比运营商能直接办理…

    2023-06-07 创业杂谈
  • 个税按年和按月征收的不同,个税按年度扣除

    大家都知道,对于个人工资、薪金所得需要缴纳个人所得税。那么对于工资个人所得税是按月计算还是按年计算,大家都清楚吗?接下来,会计网小编就在此和大家聊聊工资个人所得税是按月计算还是按年计算的?快来看看吧!   工资个人所得税是按月计算还是按年计算? 答:参考《中华人民共和国个人所得税法》相关规定,我国个人所得税实行分类所得,需按月或者按次缴纳个税。 小…

    2023-08-28
  • 餐饮管理制度,食品安全主体责任监督管理规定

    2022年11月1日起,《企业落实食品安全主体责任监督管理规定》(下文简称《规定》)正式开始施行,该《规定》要求所有餐饮类业均应当建立相应的食品安全管理制度,并配备与自身规模及供应食品类型相适应的食品安全管理机制。自该项《规定》颁布之日起,各地市场监督管理部门就迅速开展了相应的规范培训活动,并陆续于今年开展落实食品安全主体责任执法检查。各地市场监督管理部门对…

    创业杂谈 2023-06-12
  • 个人ip怎么做?做个人ip前途怎么样?

    说起个人ip,如果你问展天,那么恭喜你,你算是问错人了,因为我目前来说并没有做ip的想法,也没有往微信导流的做法,有人说,你写博客,写公众号,不就是做个人IP吗? 其实这个理解是不对的。 很多做个人ip培训的都说,做个人ip就是写公众号,做内容输出,其实这只是非常浅显的表象。 做个人ip必备的就是,要会写,会说,这是最基本的要求,而不是会写,会说就是做个人i…

    创业杂谈 2023-03-21
  • 适合老人的收入(无本一天赚1000)

    感谢邀请 老人年龄大了,不想冒风险投资。想稳扎稳打稳稳当当的过日子这种想法很好。 在我看来也有很多行业可以选择。 一 派发广告传单。现在需要派发广告传单的活很多很好找。既锻炼了身体又有收入。是很适合老人做的工作。 二 在小区门口看大门。一般看大门的都是用老年人,这个工作也很适合老年人干。认真沉稳能盯住岗。 三 捡废品。我听说过只要看住几个高档小区的垃圾箱。一…

    2023-02-05
  • 摆地摊卖什么合适?适合摆地摊的小商品

    这两天有一个词特别火:地摊经济,在微博上的热搜早已过亿,为了推动疫情后的发展,国家也支持摆地摊,最近搞的全民地摊,这样的一个机会,也让很多人尝试摆摆地摊,下面说一下对于新手来讲,摆地摊卖什么合适。 1、卖服饰 摆地摊卖服饰是很非常好的,当然这一项也是最常见的,婴儿的衣服裤子最好是不卖,年轻母亲不容易在摆地摊上给孩子买东西,会担忧危害的婴儿的肌肤。青少年到年青…

    创业杂谈 2023-02-04
  • 酸菜鱼的做法 家常视频教程窍门

    酸菜鱼也叫酸汤鱼,是重庆江湖菜中的经典菜品。因其酸辣可口的味道而征服众多食客的味蕾而名扬天下,在很多大酒店或苍蝇馆子都能点到这道菜,可见人们对这道菜的喜爱程度。也正因为人们喜爱,所以很多人想吃就自己动手来做,这样即经济又干净卫生,但是要把这酸菜鱼做好可不是一件容易的事。   寻味之旅,总能用奇遇来形容。对于食材的每一分把握与注释,是对品食者最大的尊…

    2023-06-16 创业杂谈
  • 美容院加盟费,开美容保健店需要什么证件

    投资一家美容保健加盟店需要多少钱,这需要从品牌、规模、地点等因素来说,开设一家美容保健加盟店的起始资金包括以下几个方面,下面一起来看看。 加盟费——不同品牌的加盟费用不同,一些知名品牌可能需要较高的加盟费用。 店面租金和装修费用——租金和装修费用将根据店铺所在地区和大小而有所不同。 设备和器材费用——美容保健加盟店通常需要购买各种美容设备、器材和工具。 库存…

    2023-06-16
  • 网站转化率怎么算 怎么计算网站转化率的方法

    网站转化率指的是访问者在网站上进行有效操作的比例,通常通过计算特定行动次数(例如注册、订阅或购买)与访问次数之间的比率来计算。而计算网站转化率的方法和技巧,也一直是数字营销工作者们经常关注的话题之一。在本文中,我们将从以下四个方面来详细介绍网站转化率的计算方法并分享一些实用的技巧: 一、网站转化率的基本计算方式 二、定义和设置转化目标 三、确定数据的来源和可…

    创业杂谈 2023-05-24