分享2017年微软编笔试程题

本文介绍了微软亚洲研究院的一次编程挑战赛,包括三个具体的编程题目:皇后冲突问题,优化机器人工作效率,以及调整二维矩阵中硬币分布的最少步骤。

时间是150分钟
语言不限
AC过就行
AC1到2道就行
最强的是有人8分钟就做出一道题了 23333 66666
这个是微软亚洲研究院的题目

1. 编程题1

无限棋盘中有n个皇后。我们说,两个皇后可能攻击对方,如果他们在同一垂直线,水平线或对角线,即使有其他皇后坐在他们之间。

现在,鉴于女王的位置,找出有多少对可能互相攻击?

输入

第一行包含整数n。

然后N线遵循。每行包含2个整数,RI和CI表示在Ri第十二行和第TH列中有一个皇后。

没有两个皇后有相同的位置。

对于80%的数据,1 = N = 1000

对于100%的数据,1 < = N = 1000000 = RI,Ci < = 1000000000

输出

一个整数,对数可能互相攻击。

样例输入5  
1 1  
2 2  
3 3   
1 3
3 1
样例输出
10
  1. 编程题2
n个工作要完成。机器人需要1小时才能完成一项工作。

刚开始你只有一个机器人。幸运的是,机器人可以制造更多与自己相同的机器人。它需要一个机器人Q小时来建立另一个机器人。

那么完成n个工作的最低小时数是多少?

注意两个或两个以上的机器人在同一个工作或建造相同的机器人不会加速进度。

输入

第一行包含2个整数,nq。

对于70%的数据,1 = N = 1000000

对于100%的数据,1 = n = 1000000000000,1 = q = q = 1000

输出

最低小时数。

样例输入

10 1

样例输出

3. 编程题3

小喜有一盒2xn细胞组成如下图所示。

+----+++

| A1 A2 A3 A4 | | | | ..一个| |

+----+++

| B1 B2 B3 B4 | | | | ..| BN |

+----+++

每个细胞中有一些硬币。第一行硬币的数量是A1,A2,…A和第二行的金额是B1,B2,…BN。

每一个小HI可以从一个单元格中选择一个硬币,并将其放入相邻小区。如果两个单元格共用一个边,则相邻。例如,A1和A2相邻;A1和B1相邻;A1和B2不相邻。

现在,小喜希望每个细胞有相等数量的硬币移动硬币。他想知道完成这个任务所需的最小次数。

输入

第一行包含一个整数,n = 2 = n = 100000

然后遵循N行。每行包含2个整数AI和BI。(0 <爱,毕< = 2000000000)

保证盒内硬币总量不超过2000000000,是2n的倍数。

输出

最小秒数。

样例输入



3 4

6 7

样例输出

4.编程题


在一个视频游戏,小喜是去刺杀一个邪恶的组长,EL SUENO。

有N组中的高价值目标,编号从1N,每个目标的另一个目标作为他的直接上级除了EL SUENO谁没有优势。因此,上级下级层次形成树形结构。EL SUENO在根。

暗杀第i个目标成本Ci。在暗杀目标小嗨已经获得他足够的信息。第i个目标,小嗨需要信息ini单位。通过暗杀目标小喜将获得一些关于目标的直接上级信息。更具体地说,一个对象有关于他的信息优势IPI单位。所以为了刺杀小嗨EL SUENO,要暗杀他的一些直接下属,获得信息的总和是不够的;暗杀下属要刺杀他们的直接下属…直到达到某些目标,需要事先提供零信息。(幸运的是,如果一个目标没有下属,他总是需要零信息。)

小喜想知道成功暗杀EL SUENO最小成本是什么。

输入

第一行包含整数n。

然后按照N行。每行描述一个目标4个整数,FI,ini,IPI,Ci。

FI是第i个目标上。他为EL SUENO FI是零。

这是个需要暗杀目标信息量。对于一个目标没有下属他的INI总是零。

IPI是信息的第i个目标对他的上级FI量。

CI是暗杀第i个目标成本。

对于30%的数据,1N100≤ini,IPi < = 100

对于60%的数据,1N1000≤ini,IPi < = 1000

对于100%的数据,1N20000≤Fi≤N0≤ini,IPi < = 200001 CI 1000 <= <=。

保证N个目标形成树形结构。

输出

最低成本。如果小喜不能刺杀EL SUENO输出了一些- 1。

样例输入

六

1 2 2

4 0 2

0 2 5

0 2 6

0 1 2

0 1 3

样例输出

十一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值