摘要:
第一次写树状数组,感觉那个lowbit位运算用的相当厉害。因为-x相当于把x的二进制位取反然后整体再加上1,所以最右边的一个1以及末尾的0,取反加一以后不变。比如1000取反是0111加一得到1000,这样与运算以后不变最右边的1左边部分取反,加一不会影响左半部分,所以与运算以后全部为0对于这道题来... 阅读全文
摘要:
考虑一个简单的问题,两个长度为n的有序数组A和B,从每个数组中各选出一个数相加,共n2中情况,求最小的n个数。将这n2个数拆成n个有序表:A1+B1≤A1+B2≤...A2+B1≤A2+B2≤......An+B1≤An+B2≤...然后用优先队列合并成一个有序表即可。队列中需要记录两个数的和s,以... 阅读全文