6月23日英雄会平台发布了一道难度为超5星的微软比赛题目,截止活动结束共有300多名编程爱好者参与线上答题,而最终通过者仅有7人,通过率仅为2%。为什么成绩如此出人意料?是因为题目的英文描述难以理解?还是题目本身的难度太高让很多人望而生畏知难而退?


为此我们诚邀各路英雄豪杰前来切磋探讨,共同发现:

1.解题思路:本次大赛一等奖获得者-大连理工大学学生__newSolar,提供两种解题思路;

2.代码样本:雅虎刷题狂人曹鹏专家的代码将作为样本展示,供学习借鉴;

3.“一起来找茬儿”:在所有答题者中,抽选部分未通过的错误代码,邀你来“找茬”;


题目描述:

在微软云计算服务的机房,有很多机器上跑着一个或者多个的虚拟机。在一段时间里,有很多用户会来请求建立虚拟机,或者把虚拟机关闭。这个时候,一个最重要的问题,是如何把用户的请求分配到不同的机器上。这里我们把实际的问题简化成对CPU的申请。

假定有M台机器用来服务用户,我们把机器编号成0到M。每台机器有多个CPU核,我们把核编号为0到Cm。

当用户在申请资源的时候,会生成一个请求 “申请<k>个核”,并且每个请求编号为m如果我们在现有的机器中能找到一台机器能满足,这台机器的空余的连续的核能满足要求的话,就返回<M, C>作为结果。M是机器的下标,C是申请的第一个核的下标。如果没有找到能满足请求的机器,<-1,

-1>作为结果。

当用户释放资源的时候,生成一个请求”第m个请求的资源释放”。保证一个请求释放最多一次。如果请求没有满足,忽略释放的请求。

输入

第一行是T, 总共的测试的个数

每个测试,第一行给出M 和Q,机器的总数和请求的个数

接下来是M行给出每一台机器的核数 Ci

接下来Q行给出请求。请求两种格式,

1.       A k    表示申请k个核

2.       F m   表示释放第m个请求申请的核

输出

对于每一个测试,首先输出

“Case #i:”  i是测试的标号,从1开始。

接下来对于所有申请的请求,输出m c 或者-1

-1

[限制条件]

1 <= T <= 20

1 <= M <= 100000

1 <= Ci <= 128

1 <= Q <= 1000000

1 <= k <= 128

1 <= m <= M

The number of queries of type 1 is the same

as that of type 2.


题目解析:

考虑到数据范围,共有10W个机器,100W次查询,时间上不足以在每次询问中遍历所有的机器,但考虑到CPU的数量只有128

可以从这里入手加快查询效率。

解法一:

我们维护128个集合,每个集合存储不同的最长连续空闲核数的机器,(eg, 集合1存最长空闲数为1的机器,集合2存最长空闲数为2的机器)。对于每次A询问,申请核数为k,我们只需枚举从k到128的所有集合中机器编号最小的,为了查找效率,我们可以使用

c++STL的set (或者java的TreeSet), 内部是树形结构,每个集合的第一个元素即为最小元素,查找到之后暴力更新这个机器使用情况并把新的机器信息加入到集合中,同时为了F操作保存询问信息。对于F操作相对简单,直接恢复记录的信息并更新机器信息就可以了。

此方法每次询问的复杂度大约为O(128*log(n))。

解法二:

对于每次询问,我们直接从10W个机器下手,为了提高效率可以使用线段树,线段树的每个节点维护当前区间所有机器最长空闲数,对于A查询,申请核数为k,如果当前节点左儿子值>=k,则在左子树中查询,否则在右子树查询,可以很容易在log(n)时间内查询到所需要的机器。其他操作和上一种解法类似。


代码展示(解法一):

http://student.csdn.net/mcd/topic/235300/937965

代码展示(解法二):

http://student.csdn.net/mcd/topic/235300/937980

雅虎刷题狂人曹鹏专家代码展示:

http://student.csdn.net/mcd/topic/235300/937984


“一起来找茬儿”:在所有答题者中,抽选部分未通过的错误代码,邀你来“找茬”

错误代码一:http://student.csdn.net/mcd/topic/235300/937968

错误代码二:http://student.csdn.net/mcd/topic/235300/937971

错误代码三:http://student.csdn.net/mcd/topic/235300/937972

转载于:https://www.cnblogs.com/jackyzzy/p/4215002.html

一道仅有7人通过的超5星微软比赛题目-------解题思路优秀代码分享,邀你来“找茬儿”...相关推荐

  1. 超5星难度【微软Core allocation】Coding赛题 - 解题思路优秀代码分享,邀你来“找茬儿”

    6月23日英雄会平台发布了一道难度为超5星的微软比赛题目,截止活动结束共有300多名编程爱好者参与线上答题,而最终通过者仅有7人,通过率仅为2%.为什么成绩如此出人意料?是因为原题的英文描述难以理解? ...

  2. 2021年中国研究生数学建模竞赛E题信号干扰下的超宽带(UWB)精确定位问题思路参考代码

    2021年中国研究生数学建模竞赛E题 信号干扰下的超宽带(UWB)精确定位问题                                                        一.背景 ...

  3. CTO梁军离职,市值蒸发59亿,核心技术人才仅剩3人!寒武纪“动荡”的6周年

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 寒武纪,在 2020 年 7 月 20 日正式登陆科创板时,收获了无数赞美,并被誉为"AI 芯片第一股":这家主营 ...

  4. 寒武纪“动荡”的 6 周年:CTO 梁军离职,市值蒸发 59 亿,核心技术人才仅剩 3 人

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 寒武纪,在 2020 年 7 月 20 日正式登陆科创板时,收获了无数赞美,并被誉为"AI 芯片第一股":这家主营 ...

  5. 互联网晚报 | 11/15 星期二 | 建行客服回应转账失败;每日优鲜全职员工仅剩55人;腾讯发布2022年三季度财报...

    建行客服回应转账失败:系统故障,目前已恢复 16日,建行登上微博热搜,有网友表示实时转账无法到账.建行客服回应称,11月16日上午9:30后系统故障,无法办理各类账务.非账务交易.客服表示,因建行交易 ...

  6. 韩沉船多个客舱塞满遗体 高二复课仅剩13人

    4月24日,韩国京畿道安山市檀园高中附近,学生在路边铁网围栏上,系上一条条写着师生姓名和悼念.祈祷话语的丝带新华/法新 韩国京畿道安山市檀园高中24日上午复课,沉寂多日的教室再度迎来高三学生.走过静卧 ...

  7. 从员工出走仅剩 5 人,到一支打胜仗的铁军

     从员工出走仅剩 5 人,到一支打胜仗的铁军-- 2017年05月22日 23:29:01 来源:3W互联网精选 用微信扫描二维码 分享至好友和朋友圈 3人参与 3评论 内容来源:2017 年 4 ...

  8. 图片底下配的文字叫什么_38岁孙俪越来越有女人味!穿短裙配性感黑丝美腿撩人,短发超美...

    孙俪一直以来都给观众一种干练精明的形象,最近几次出演的电视剧也都是女强人角色,不过私底下的孙俪却是非常的随性接地气,爱好养生的她,虽然今年已经38岁了,但是跟年轻的时候比起来,不管是身材还是颜值都没有 ...

  9. 哈工大计算机系名单,哈工大计算机学部公布拟录取名单,计算机科学与技术仅录29人!...

    去年,我发布过一篇有关哈尔滨工业大学计算机学部计算机科学与技术专业录取的相关信息,他们真的非常幸运,2020年的复试章程里面指出复试考生比例为101%,虽然最后实际录取人数要比这个比例少几个人,但是最 ...

最新文章

  1. python连接mysql很慢 2.7_Python 2.7 学习笔记 访问mysql数据库
  2. 沽空机构两度狙击,波司登2018/19财年业绩显著,未来到底是否值得关注?
  3. Centos7 网络配置
  4. CG CTF WEB /x00
  5. Django model中的 class Meta 详解
  6. php获取继承类方法吗,php如何获取当前类名,继承中的问题?
  7. Bootstrap 分页导航
  8. Leetcode刷题记录[java]——561 Array Partition I
  9. 设置和开通freebsd远程登录
  10. 快来了解下Snappy Ubuntu是什么
  11. 解决 Illegal DefaultValue null for parameter type integer 异常
  12. C语言会场安排问题贪心算法,贪心算法解决会场安排问题多处最优服务次序问题(含源代码).doc...
  13. cf 189B - Counting Rhombi
  14. 获取js文件后的参数
  15. LINUX C#安装开发工具MonoDevelop
  16. catia 桥接曲面圆角_CATIA建模教程_二_圆角及桥接在空间曲线中的应用
  17. 10大漏洞评估和渗透测试工具
  18. 韦小宝高超的说谎技巧
  19. MySQL更新数据流程
  20. wps office 2010 Wps文字文档保存及自动保存方法介绍

热门文章

  1. eclipse整合ssm运行初体验
  2. Flutter | 由Builder Widget而引发的思考
  3. 相机标定(一): 世界坐标系、相机坐标系、图像坐标系和像素坐标系间的关系
  4. 线性规划专题——SIMPLEX 单纯形算法(三)图解——示例、注意点
  5. 亚马逊新手卖家选品究竟要坚持什么样的原则?
  6. Android Gradle学习(一)
  7. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D)
  8. (甲)1001 A+B Format (20 分)
  9. vue 基础入门:vue 的调试工具
  10. 4-发音规则(吞音)