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

相关推荐

  • 优秀的人都有哪些思维?都拥有这5种顶级思维

    著名作家王小波在《沉默的大多数》中写到: 成为思维的精英,比成为道德精英更为重要。 古往今来,失败者多囿于顽固僵化的思维之中,而优秀成功者无一不是思维上的精英。 很多时候,正确的思维方式比努力重要100倍。 今天和大家分享,能让你变得越来越厉害的5种思维。 1 刻意练习思维 无论是学习一项专业技能,还是养成一个好的习惯,甚至抛弃本职进入一个全新的行业。 刻意…

    2022-11-07
  • 流量卡选择归属地(流量卡怎么选择归属地)

    最强神卡-四大天王 最强四大天王 目前性价比最高的套餐 逸白卡,两年19元月租,每月103G通用流量+100分钟通话,每G流量不到一毛九! 重山卡,两年29元月租,每月203G通用流量+200分钟通话,每G流量只要一毛四!可选号码。大流量低月租首选! 29山东卡,20年长期套餐,无需续约操作,运营商快递给你,你自己激活时可以选号,还能添加1元2G流量+60分…

    2023-06-06
  • 王者荣耀无限火力软件(王者荣耀无限火力软件v1.2)

    距离2022年结束只剩几天的时间,各大卫视纷纷官宣自己的跨年阵容,快来看看你最喜欢哪一家卫视的嘉宾阵容吧! 湖南卫视以“时间向前,我们向上”为晚会主题,将进行最具“人民性”的创意设计,让普通人登上梦想的跨年舞台,见证平凡的力量。同时,在视觉和舞台上,也将对虚拟现实领域、元宇宙领域做出新尝试。 邀请嘉宾有杨幂、杨紫、龚俊、檀健次、王心凌、苏有朋、华晨宇、王鹤棣…

    2023-05-26 创业杂谈
  • 酸菜鱼怎么做好吃,家庭制作酸菜鱼的方法

    吃了一段时间的红烧鲫鱼、红烧鳊鱼、清蒸鲈鱼之后,老妈问我会做水煮鱼片吗? 会啊,水煮鱼片还不简单,给您做川菜麻辣的那种水煮鱼,包您喜欢,一定是非常的开胃下饭。 到了周一,因为工作原因,有点忙,一连好几天都没有在家下厨房做饭,爸妈呢,也图省事,在家吃的是饺子、青椒肉丝盖饭、包子馒头和方便面。老坛酸菜的味道,他们都非常喜欢,于是,又在一个周末的晚上,他们问我,会…

    2023-07-22 创业杂谈
  • 10元店(10元店怎么开店)

    文 | 鹿财经,作者丨洁云,编辑丨陆达 摘要: 1.出生于农村家庭的叶国富,凭借着小饰品市场带来的“致富密码”,成功打造出“哎呀呀”品牌,巅峰时期门店数量超过了3000家,叶国富用10万本金打开了一个十亿市场。 2.随着互联网时代的到来,网购平台的高性价比对小饰品生意造成了不小的打击,“哎呀呀”逐渐退出了市场,而叶国富也在一次市场考察中找到了“升级版”的生意…

    2023-05-26
  • 深藏不露的暴利赚钱玩法

    最近几天都没有好好给大家分享些赚钱小秘密,行家帮你选,今天给大家捋一捋思路。 其实他是拼多多一个算是社区模式的小玩法。 但我估计存在信息差,像我不怎么使用拼多多的人,可能真没了解过,也是无意之间我进入到了这个入口。 这个点估计也会有不少人,一定不知道。 像我的全自动挂机项目似的其实你能悟出来,流量到系统到成交的三部曲其实也就知道了大概。 其实很多东西存在一定…

    2023-01-07
  • 十大奢侈品牌包包排名,lv包性价比最高的款式是哪款

    很多女生的人生第一款大牌包包都会选择路易威登,有167年历史的蓝血品牌路易威登也被认为是当今世界最优秀的箱包品牌之一。无论是设计、品质、和文化底蕴都是无可挑剔的。路易威登也是个高产选手经典热门的包包有很多不经让人挑花了眼,今天我们就来盘点一下LV比较值都买的高颜值包包,有的是经典的常青青树包款,有的是经两年才上市的黑马选手,希望看完本期内容大家可以找到自己的…

    2023-06-22 创业杂谈
  • 纯流量卡有什么弊端(纯流量卡在哪才能买上正规的)

    2020年开始,移动、电信、联通可以携号码转网。比如,同一个手机号码可以从移动转网到电信或者联通,手机号码还是原来的号码,手机号绑定的东西没有变,只是手机运营商变了。 移动神州行,不能销户,需要等到这个号码欠费停用3个月后,你不再使用了,才会自动销户。欠费停机3个月对你信誉没有任何影响。这个号码便会重新流入市场,以新的号码形式卖给客户。 移动客服和营业厅的工…

    2023-05-24
  • 虾皮跨境电商怎么选品 跨境电商怎么选品

    如果你正在努力寻找适合您的在线商店的最佳产品,可以参考这篇文章:《跨境电商选品–15个方法帮你找到潜力爆款》 第六步:检查用户的付款意愿(评论) 如果你决定进入一个利基市场,那么您必须对以下问题有一个明确的答案:“ 用户愿意支付 ”吗?答案只能是“ 是 ”。 你可以通过用户的评论数量、评分来确定。(在工具里的第一个里,有详细的操作步骤) 你可以看…

    2023-02-21 创业杂谈
  • 做网赚最高效的学习方法

    我们每个人都是在不断的学习和成长,展天觉得没有任何一个人可以说他能完全的懂一个行业里面的知识,都是在一个不断学习不断精进的过程中,俗话说的好,活到老学到老,只要人存在着都是一个学习的过程,任何人都一样,没有例外~ 但我发现一个问题,很多人都是漫无目的的学习,看到什么都要学习一下,看到不懂的都要研究一番,我觉得要是按照这个进度下去,那么肯定会一直不断的在学习中…

    2020-04-16
  • 喉箍有哪些种类,喉箍的使用方法及结构图解

    在汽车、工业机械、石油、化工、农业、制药、阀门等领域,用于软硬管连接的喉箍应用广泛,喉箍主要分为三类:美式喉箍、德式喉箍、英式喉箍。   今天,就和大家好好聊聊这三种喉箍的特点及应用领域。 美式喉箍 美式喉箍应用最为广泛,所以也叫常规型喉箍,比较通用,美式喉箍分为小美式喉箍、大美式喉箍,其带宽分别是12.7mm和14.2mm。 美式喉箍的特点是钢带…

    2023-07-18 创业杂谈
  • 没客源怎么做夜场营销(夜场营销经理怎么才有客源)

    和大多数营销一样,夜场模特佳丽们的营销要通过合理的方式、方法将特色和亮点推荐给客人,达到多赢的目的,公司多赢利,员工收入也提高。 一个优秀的营销人员应具备的能力:首先夜场模特佳丽们需要了解夜场文化及各类酒水,熟练掌握每一种酒水的种类,产地(威士忌以苏格兰最好、红酒香槟以法国最佳),特点、饮用方法;另外夜场模特佳丽们需要了解果盘的果品搭配,厨房小吃的口味以及主…

    2022-05-31