春招链家笔试题,求指点。

春招链家大数据岗,后面两道编程题,可有大神给个思路。说实话题都没怎么懂;#春招##笔试题目#
全部评论
def getStartOfU(edge_list,has_visited,u):     result=[]     for edge in edge_list:         if edge[0] == u and not has_visited.__contains__(edge[1]):             temp=[]             temp.append(edge[1])             temp.append(edge[2])             result.append(temp)         elif edge[1] == u and not has_visited.__contains__(edge[0]):             temp=[]             temp.append(edge[0])             temp.append(edge[2])             result.append(temp)     return result def search(edge_list,u,v):     has_visited=[]     has_visited.append(u)     path_list=[]     pre_list=[]     pre_list.append([u,0])     while pre_list.__len__()>0:         node  = pre_list[0]         pre_list.remove(node)         next_list = getStartOfU(edge_list,has_visited,node[0])         for data in next_list:             has_visited.append(data[0])             t = data[1]             if t<node[1]:                 t=node[1]             pre_list.append([data[0],t])             if data[0] == v:                 return t     return 0 N = input() edge_list=[] for i in range(int(N)-1):     str = input()     data=str.split(" ")     temp=[]     temp.append(int(data[0]))     temp.append(int(data[1]))     temp.append(int(data[2]))     edge_list.append(temp) Q = input() questions = [] for i in range(int(Q)):     str = input()     data=str.split(" ")     temp=[]     temp.append(int(data[0]))     temp.append(int(data[1]))     questions.append(temp) for q in questions:     result = search(edge_list,q[0],q[1])     print(result)
点赞 回复 分享
发布于 2018-03-19 21:40
 #include<iostream> #include<iomanip>  using namespace std; int  main(){     int i,n;     double f;     while(cin>>n){        f=1.0;        for(i=2;i<=n;i++){           f+=1.0/i;        }         cout.setf(ios::right);      cout.fill('0');       cout.flags(ios::fixed);        cout.precision(2);        cout<<f<< endl;       }     return 0; } 
点赞 回复 分享
发布于 2018-03-19 21:34
k大的最小堆不就解决了,,有那么麻烦吗
点赞 回复 分享
发布于 2018-08-17 09:05
面试题目 好像不太一样, 我的是这样的 小红去参观跑步比赛了,场上一共有n个人在赛跑,所有人的速度都不一样。由于规则的原因,第i个人在第i米的位置起跑。如果第i个人被别人超过的时候,第i个人就会被淘汰。假设跑无限长时间,最开始n个人站位从n个人的所有排列中等概率选出一种,那么留在场上的人的数量的期望是多少呢? $n \in [1,1000]$ 当时我的想法 看 n < 1000, 以为是个O(n^2)的dpdp[i] 能从 dp[i+1] 转移过来,然后怎么怎么算,,2333 但是后来发现应该求贡献,把每个位置上的人活下来的期望算出来 然后求和就行了 假设现在1,2,3...n个人都向右跑 对于第i个人来说i+1,i+2,...n都是无影响的.然后考虑i活下来的期望,活下来的情况只有1,2,...i-1没有比i大的,那么第i个人是这些里最大的.也就是说这i个人中最大的那个人的位置是固定的的.那么期望就是 frac{(i-1)!}{i!} = frac{1}{i}; 所以答案就是 \sum_{i=1}{n} = frac{1}{i}; 当时脑抽想的很乱,,233. 一棵树,n个点,边权,q次询问 问两点间边权最大值. 我是 树链剖分+线段树 做的,没仔细看数据范围最小值设成了0 WA了好多发.... 还可以 倍增做, 类比倍增求LCA.
点赞 回复 分享
发布于 2018-03-22 20:55
第二题我同学用广度优先做出来了
点赞 回复 分享
发布于 2018-03-19 21:35
看样子每个岗的编程题都一样啊。
点赞 回复 分享
发布于 2018-03-19 21:11
同啊,自己本地测试都好使。第一我也是直接合并解的,有时67%,有时50%。它的读取一行感觉不好使呢,反正对他的系统不熟悉。无感
点赞 回复 分享
发布于 2018-03-19 21:11
同求第二题解法我保存了曾经访问过的路径最大值也超时了。
点赞 回复 分享
发布于 2018-03-19 21:08
第一题是三个有序数组让找第K大的值么? 我直接归并的,结果只有17%的正确率,无语... 第二题求期望, 暴力解法超时了。。。不会
点赞 回复 分享
发布于 2018-03-19 21:04

相关推荐

仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务