全部评论
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)
#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; }
k大的最小堆不就解决了,,有那么麻烦吗
面试题目 好像不太一样, 我的是这样的 小红去参观跑步比赛了,场上一共有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.
第二题我同学用广度优先做出来了
看样子每个岗的编程题都一样啊。
同啊,自己本地测试都好使。第一我也是直接合并解的,有时67%,有时50%。它的读取一行感觉不好使呢,反正对他的系统不熟悉。无感
同求第二题解法我保存了曾经访问过的路径最大值也超时了。
第一题是三个有序数组让找第K大的值么? 我直接归并的,结果只有17%的正确率,无语... 第二题求期望, 暴力解法超时了。。。不会
相关推荐
sounfury:找java工作的话把java内容占比写多点,你鸿蒙写太多了
点赞 评论 收藏
分享