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

相关推荐

  • 手机怎么注册淘宝店铺步骤?如何在手机上注册开淘宝店

    想要注册淘宝店铺,最重要的就是需要有个人手机号。那么如何使用手机号注册淘宝店铺呢?淘宝官方推出了手机淘宝店铺审核系统,可以通过手机号直接完成审核,方便快捷。不过,需要注册手机号,而且是实名认证。淘宝官方说用支付宝认证注册是不可以的,所以大家一定要注册好支付宝。________ 1.打开手机淘宝,进入淘宝首页。 手机号,也就是用户的手机号。一般只有三种情况下可…

    2023-02-05
  • 男人怎么打扮(如何会穿衣服,提高时尚)

    男人怎么打扮(如何会穿衣服,提高时尚)男人怎么打扮(如何会穿衣服,提高时尚)男人怎么打扮(如何会穿衣服,提高时尚)男人怎么打扮(如何会穿衣服,提高时尚)

    我的频道专注于男士穿搭技巧,让你更时尚。 你有没有经常苦恼不知道该怎么穿衣服,或者被吐槽没有衣品,像这样! 怎么让你的穿衣更时尚,今天我要教你3个非常实用的技巧。 当然,在这个视频里,我不是告诉你要去选择多么昂贵的服饰。 而是通过合理的调整,让你从宅男,快速,有效,简单地变成潮男,想知道吗? OK 让我们开始吧!   NO.1 色彩,色彩是我们对所…

    2023-05-30 创业杂谈
  • 菜鸟驿站怎么加盟开店?大概每天能赚多少钱?

    现在不管是社区团购还是网购基本都是放在菜鸟驿站或韵达超市,极大了省去快递投放时间和快递领取的麻烦。 基本上每个小区外边都有菜鸟驿站,或许很多朋友不太明白菜鸟驿站是怎么赚钱的,明明我们存取快递都是免费,菜鸟驿站是靠什么盈利呢? 菜鸟驿站怎么赚钱? 1.首先我们作为用户,一般在菜鸟驿站存取快递是免费的(当然有时间限制),菜鸟驿站的收入主要来自快递公司的补贴,一般…

    2020-12-29
  • 淘宝客怎么使用?如何获取淘宝客链接

    如何获取淘宝客链接 1、淘宝客推广是一种比较简单的推广方式,如果您有什么想学习的,可以来关注一下。 2、由于是阿里巴巴集团旗下的淘宝客网站,那么我们在阿里巴巴集团联盟里设置阿里妈妈推广链接,就能够使用淘宝客链接的。 3、淘宝联盟这里也有淘宝客推广工具,当然大家在找淘宝客推广的时候一定要选择那种站外推广。只有推广成功了,那么也可以赚取佣金。 4、所以淘宝客有佣…

    2023-02-06
  • 不露脸的文案号怎么赚钱?

    不露脸的文案号怎么赚钱?不露脸的文案号怎么赚钱?不露脸的文案号怎么赚钱?不露脸的文案号怎么赚钱?

    什么样的自媒体账号上手最简单? 答案当然是文案号。 不需要出镜、不用镜头表现力,只需要准备一些文案,再随便套一个还不错的模板,最后配上适合的背景音乐就可以了。 所以有一阵子像这样的书单号在抖音上特别地火,类似的视频也在平台上疯狂产出。 不过,这样的便利是有代价的,那就是这种文案号很难打造个人ip,也很难产生粉丝粘性、建立信任。 这种形式在抖音最开始的“混乱”…

    2023-01-03 创业杂谈
  • seo177这个有百度指数的词怎么来的?

    每次写文章之前都要看下有什么合适的词可以写一下,所以经常会找一些比较冷门但是有百度指数的词写一写。 毕竟有指数的词对于网站权重的提升有帮助。 当找词找多了之后经常会发现一些莫名其妙的并且有百度指数的词,比如今天写的这个seo117。 看见这个词就纳闷了,SEO117这词怎么来的?这词有官网还是有其他的作用? 而且seo117这个词还有一定的指数。 秉着探索的…

    2020-02-14
  • 小型致富创业好项目,小型致富投资项目

    小型致富创业好项目,小型致富投资项目小型致富创业好项目,小型致富投资项目小型致富创业好项目,小型致富投资项目小型致富创业好项目,小型致富投资项目

    现如今,想要创业又没有一技之长,难道就只能跟风去做奶茶店、服装店、餐饮店等这些行业吗?虽说这些行业在市场上已经算是比较稳定,也比较容易入门的,但它的竞争压力也确实不小。 其实有些行业虽说看起来没那么高利润,实际做好了赚钱一点也不少,就好比加工电动车挡风被这个创业项目一样,规模虽不大,但是做好一点都不少挣! 开办这样一家加工厂,很多都是从家庭小作坊做起,刚开始…

    2023-06-15 创业杂谈
  • 字节跳动成立时间地点

    谁能挑战阿里和腾讯? 2016年11月,央视《对话》节目,台上坐着今日头条创始人张一鸣和拼多多创始人黄峥。张一鸣是这期对话的主角,黄峥则是三位嘉宾之一。 “假如你是张一鸣,如何面对BAT?”主持人陈伟鸿向嘉宾抛出了这个问题。 黄峥的回答是:如果我是张一鸣,我想我会更加激进的做全球化。当你的公司布局到全球,反过来,集中全球的资源回来打中国的市场,也会变得更加从…

    2023-02-18
  • 蜜菓奶茶,蜜菓奶茶哪个好喝

    奶茶星人前来报道,每天靠奶茶续命。 我经常跟朋友说:“我喝过的奶茶,比你喝过的奶都多。今天给大家安利几款我近期超爱的奶茶。   对于一些满大街都是的奶茶我就不说了,推荐几款好喝又好看的奶茶,蜜菓榜上有名。 蜜菓MYGIRL,一家以少女系列的温柔色系搭配的门店,也是一些八零后九零后的青春,已经有十多年的时间沉淀了。 门店环境:简约清爽,纯色调的白色基…

    2023-07-14
  • 短视频赚钱应该是目前最快赚钱的模式

    短视频赚钱应该是目前最快赚钱的模式短视频赚钱应该是目前最快赚钱的模式短视频赚钱应该是目前最快赚钱的模式短视频赚钱应该是目前最快赚钱的模式

    如果你现在想创业,想赚钱,想找项目,我建议你全放下,啥也不要折腾,一心去干这件事,你一定能赚到钱,啥项目呢? 对,干直播。 这是目前赚钱最快的方式,没有第2个,我发几张图你看看,你看下在线人数,你就明白他们能日赚多少钱? 图: 你可能想,他们这么牛,是什么原因呢?长相,不对,没一个有你好看? 是他们表达水平高,你进去听听你就知道,不是这回事。 你觉得他们文化…

    2021-07-15 创业杂谈
  • 网上怎么赚钱?简述互联网赚钱的方式

    首先做网赚,项目赚钱与否始终是大家最关心的话题。 那赚钱分哪些“模式” 世界上没有任何一个人, 是靠省钱实现理想生活的。 然而, 就像那句无厘头的调侃: 钱不是问题,问题是没钱。 同理, 钱谁都想赚, 问题是怎么赚? 既然, 经济分[线下经济]和[线上经济]; 销售分[线下销售]和[线上销售]; 营销分[传统营销]和[网络营销]; 商业分[线下模式]和[线上…

    2021-04-04
  • 巴拉巴拉童装怎么样,什么是巴拉巴拉童装潮流风格

    巴拉巴拉童装怎么样,什么是巴拉巴拉童装潮流风格巴拉巴拉童装怎么样,什么是巴拉巴拉童装潮流风格巴拉巴拉童装怎么样,什么是巴拉巴拉童装潮流风格巴拉巴拉童装怎么样,什么是巴拉巴拉童装潮流风格

    现如今广告铺天盖地,不论你身在何处,都无法逃避四面八方向你扑过来的广告,电视广告、网络广告、视频广告……只有你想不到的,没有你见不到的。 各大企业为了让消费者能够记住他们的广告,可谓绞尽脑汁,费了不少苦功。一个经典的广告,能让人在听过一遍以后就记忆深刻,并且像中毒似的深入大脑,令人难以忘记。 比如说“我们不生产水,我们只是大自然的搬运工”,不用说大家就知道,…

    2023-06-09 创业杂谈