\(1\)\(1)\)主定理\(2)\)主定理\(3)\)作业\(4)\)作业
2
作业
3
作业
4\(1)\)把每个数hash到桶里面,然后\(O(n)\)遍历,假设遍历到了\(s_i\),计算\(h-s_i\)的hash值,看在不在桶里面(注意\(h-s_i\)不能为\(s_i\))即可
Independent Uniform Hashing就是各个输入\(x\)之间的hash是互不干扰的,而且均匀地hash到每一个位置上。所以是有可能冲突的,但是这里算的是时间复杂度,无所谓\(2)\)排序,遍历,二分
5
两个栈实现队列的思想,只不过将栈换成普通数组,再拿两个变量记录数组的大小即可
注意这里是用array doubling动态增加内存,所以叫做前两个操作是平摊复杂度
当然这纯属出题人不是很道德
6
设solve(l,r,x,y)
表示第l
行到第r
行,且这些行的最小值在第x
列到第y
列中,所有行的最小元素。先\(O(y-x)\)找出第mid
\(=\frac{l+r}{2}\)行的最小元素,设这个最小元素在第z
列,递归解决solve(l,mid,x,z)
和solve(mid+1,r,z+1,y)
即可。不难知道时间复杂度为\(O(n\log m)\)