csp-s一轮15题题解
  • 板块学术版
  • 楼主jzhjnoi
  • 当前回复11
  • 已保存回复12
  • 发布时间2024/8/2 20:31
  • 上次更新2024/8/2 21:11:46
查看原帖
csp-s一轮15题题解
1357150
jzhjnoi楼主2024/8/2 20:31

我们可以看出这是一个递归程序,并且每一次都会调用两次函数。我们可以画出递归搜索树。 有图可知,每一层的节点数都是按2的次方一次递增上去的,1,2,4,8,16......。每次任务平摊给子节点,当任务总数为1或者0的时候就会返回。由于任务每一层均二分,则一共有 log⁡2n\log_2n层 所以底部节点的个数为 2log⁡2n2^{\log_2n}(n) 。一次总节点数为 1 + 2 + 4 + ... + n。可以看出这是一个等比数列,公比为2。设S = 1 + 2 + 4 + ... + n,则2S = 2 + 4 + 8 + ... + 2n,所以S = 2S - S = 2n - 1。 而每个节点都是O(1)的复杂度(只有两个if和一条return)。所以总复杂度就是节点总数即O(n)。

2024/8/2 20:31
加载中...