顺丰8-29号 数据分析 笔试编程大题

原题在这。
就AC掉64%
能想到比较简单的是,假设每个人最多会一种的情况下。
1、不同语言之间只要一个学习机即可让两批人都能交流,剩下一个语言都不会的,每人一个学习机即可。基于此。程序如下。
import sys
line = sys.stdin.readline().strip()
nmk = list(map(int, line.split()))
n = nmk[0]
m = nmk[1]
k = nmk[2]
lang = {}
ans = 0
for i in range(k):
    line = sys.stdin.readline().strip()
    uv = list(map(int,line.split()))
    u = int(uv[0])
    v = int(uv[1])
    if v not in lang.keys():
        lang[v] = 1
    else:
        lang[v] += 1

ans = len(lang.keys()) - 1
ans += n - sum(lang.values())

print(ans)

2、此外 ,一个人会多种语言的情况,这个情况下再细分为两种。
  • 会多种语言的人之间没有重复的语言,例如1 会 AB 语言,2会CD语言。那么就可以在一的情况中减少两个学习机,这个时候可以把AB、CD分别看成一个整体。两个整体之间就只需要一个学习机即可
  • 会多种语言的人之前有重复的语言, 例如1会AB,2会BC,或者1会ABC ,2会BCD   此时减去重复语言个数数量的学习机
但是这个时候的问题就来了,有可能两个人会的语言都大于1,且会的一样。这个数量就不好处理。
临界情况是想到了。但是写不出来。痛苦,有没有大神提供下思路。求解

#顺丰科技##数据分析师##笔试题目##校招##内推#
全部评论

相关推荐

02-12 17:30
已编辑
字节跳动_实习生(实习员工)
要怎么办呢牛:我觉得大厂日常实习最大的意义就是给自己背书,一个好公司的实习就像一个好学历似的,能够给自己增加一个标签,让别人觉得你可以。(至于真正实习干了啥,这个感觉并不太重要)。当然一家之言,仅供参考。另外,楼主已经很强了,实习毕业双双拿下,已经领先好多好多人了,羡慕啊
点赞 评论 收藏
分享
神哥不得了:首先我就是在成都,成都的互联网格外的卷,如果是凭现在的简历的话很难找到大厂,建议再添加一个高质量的项目上去,另外专业技能的话最好是超过每一条的一半
点赞 评论 收藏
分享
评论
1
12
分享

创作者周榜

更多
牛客网
牛客企业服务