NJUCS2021秋实验10题解

这次实验第二题难一些,一三题简单说一下思路
个人感觉这门课的测试样例很弱,弱到可以让算法产生改变,有些题看数据范围就是在考察二分,然后测试样例遍历就能过。。。对于一门数据结构课来说,就显得很离谱,在博客里轻轻吐槽下。
言归正传

第一题

给定一串输入序列,代表一棵树的后序遍历,请你判断这棵树是否是一棵二叉搜索树呢?
在这里插入图片描述我的做法就是递归,复杂度是n方级别,对于这道题的数据范围来说是够用的,我看群里有大佬说可以o(n),不太理解是怎么做的。
你不可能只通过一个后序遍历序列确定一个树,但是后序遍历能很方便的看出根节点,在知道根节点的情况下,又要求是二叉搜索树,那么要求整个序列先是连续a个<根的数,跟着连续b个>根的数,然后是根节点,前a个数组成左子树,后b个组成右子树,a,b可以为零,要求二叉搜索树的左右子树也要是二叉搜索树,递归结构出来了
2 3 1 7 11 5
根节点5,二叉搜索树的左子树2 3 1,右子树 7 11
对于2 3 1,1是根节点,左子树空,右子树2 3
对于2 3,3是根节点,左子树2,右子空
对于7 11,11是根节点,左子树7,右子树空
3 1 2 5 4
根节点4,左子树3 1 2 右子树5
3 1 2根节点2,前面两个数没法分成“先是连续a个<根的数,跟着连续b个>根的数”,返回

第三题

在这里插入图片描述
第三题很简单,不多说了,并查集,每次输入的两个数如果是同一个集合的,那这两个点之间就是已经有通路了,你现在还要再把他俩连上,那不就出环了,当前这条边就是应该删除的边
这题我做了半天60分,一看,数据范围,点的标号<100000,就是五条边,标号不是1-6,可能是任意数。没见过这么输入的,然后样例还给的是5个边标号1-6的,然后测试样例六个点是这样的,4个点是任意标号的,无力吐槽

第二题

在这里插入图片描述二分板子题,做题先看数据范围,员工价值<109,员工数量< 106

  1. 得开long long
  2. 按照压榨价值二分,压榨范围再0-价值最高的员工的价值之间,在这个范围二分,要进行log(H)次能找到答案,每次需要画o(n)从头到尾遍历一遍计算剩余价值和m比较,所以总的时间复杂度是O(log(H)*n),根据数据范围,没有超时

思路已经完整讲出来了,代码暂时不贴,因为还没到ddl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值