二分和逐个试,最坏差多少
待测区间有 5 次提交(第 1 次已知好、第 7 次已知坏)。运行下面这段程序比一比最坏情况: import math n = 5 print(str(math.ceil(math.log2(n + 1))) + "/"
写一个 bisect
补全 bisect(ids, is_bad):已知第一个是好的、最后一个是坏的,二分找出第一次变坏的那个,同时记下测过哪几次。 输出找到的 id。
数出二分测了哪几次
用你的 bisect,把测过的那几次提交按顺序输出(用 / 隔开)。
⚠️ 二分省了多少次测试
输出三样:二分实测次数 / 二分最坏次数 / 逐个试最坏次数。
发现改错了,第一个该问的问题
发现自己弄错了要回退,第一个该问的是【0】。
已经推给别人的提交,怎么撤
要撤的那次提交已经推送出去、别人也拉过了,应该【0】。
五项一起对得上吗
把这条路线算过的东西一次验完。运行下面这段程序: def diff(old, new): added = [l for l in new if l not in old] removed = [l for l in old
第一步:从出问题的那行追到提交
写出查 blame 的代码,输出出问题那行归哪次提交、以及它在历史里排第几。
第二步:用二分独立找一遍
假装你不知道答案,写出 bisect 二分找一遍,输出找到的 id 和测试次数。
第三步:两种撤销各做一次
写出 revert 和 reset,输出两种撤销之后的历史长度(revert 在前)。