摘要:
简单题,题目要求显然是很多次插入,所以是链表。插入两个语句,nxt[i] = nxt[u] 表示 i结点指向u的后继, nxt[u] = i表示把u的后继设成i。设置一个头结点,指向一个不存在的结点,维护一下最后一个结点tail。#includeusing namespace std;const i... 阅读全文
posted @ 2015-09-07 23:19
瑞宇
阅读(159)
评论(0)
推荐(0)
摘要:
题意:对一个矩阵进行子矩阵操作。元素最多有1e6个,树套树不好开(我不会),把二维坐标化成一维的,一个子矩阵操作分解成多条线段的操作。一次操作的复杂度是RlogC,很容易找到极端的数据(OJ上实测没有),如果判断一下然后启发式建树复杂度是min(RlogC,ClogR)。代码中结点没有保存l和r,而... 阅读全文
posted @ 2015-09-07 23:02
瑞宇
阅读(216)
评论(0)
推荐(0)
摘要:
此题最难处理的操作就是将一个单点改变集合,而普通的并查集是不支持这种操作的。当结点p是叶子结点的时候,直接pa[p] = root(q)是可以的,p没有子结点,这个操作对其它结点不会造成任何影响,而当p是父结点的时候这种操作会破坏子节点的路径,因此必须保留原来的路径。我们希望pa[p] = root... 阅读全文
posted @ 2015-09-07 22:49
瑞宇
阅读(160)
评论(0)
推荐(0)
摘要:
从包含k个整数的k个数组中各选一个求和,在所有的和中选最小的k个值。思路是多路归并,对于两个长度为k的有序表按一定顺序选两个数字组成和,(B表已经有序)会形成n个有序表A1+B1比较,而现在需要同时合并n个有序表,优先队列(堆)就派上用场了。类似归并排序用i和j维护有序表当前考虑元素,合并的时候,每... 阅读全文
posted @ 2015-09-07 22:20
瑞宇
阅读(203)
评论(0)
推荐(0)

浙公网安备 33010602011771号