顺丰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 此时减去重复语言个数数量的学习机
临界情况是想到了。但是写不出来。痛苦,有没有大神提供下思路。求解