第一题:类似折半查找顺序表中每个元素的成功查找次数总和,先找到节点数≤n的最大的满二叉树,高度为floor(log2(n)),然后最后一层的节点数为n-满二叉树的节点数。构造二分查找树,然后求每个节点查找成功的查找次数,相加。 #include <bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ll n, res = 0; cin>>n; ll height = floor(log2(n)); ll leaves = n - ll(pow(2, height) - 1); for(int i = 1; i <= height; ++i){ res += ll(pow(2, i - 1)) * i; } res += leaves * (height + 1); cout<<res<<endl; return 0; } 第二题:B - Zero Tree原题。
1 5

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
CrazyBucket:我今天下午也做梦在招聘会上面试一家小厂,给自己气笑了
点赞 评论 收藏
分享
牛客网
牛客企业服务