- 博客(4)
- 收藏
- 关注
原创 HDU 2467 Déjà vu IDA*
题意:一个机器内有M个开关,每个开关表示00~ 2n−12^n - 1之间的数字,并且每个每个数字的二进制表达中,有且只有三个1。一个数字Y通过M个开关得到的结果为: Y⊕X1⊕X2⊕...⊕XMY \oplus X_1 \oplus X_2\oplus ...\oplus X_M 现在给出初始的数字S,和目标的数字T,想用最小的开关个数,使S变成T,求出最小的开关数。如果不可能输出,impos
2015-03-22 17:44:48 1030
原创 BOJ 171 6th I 单调队列优化DP
题意:给出N个矩形的左下角的点(x1,y1)(x_1,y_1)、右上角的点(x2,y2)(x_2,y_2)。定义矩形A≤B A\le B ,当A.x2<B.x1A.x_2 \lt B.x_1且A.y2<B.y1A.y_2 \lt B.y_1。 求出最长的矩形序列A1,A2,...,AnA_1,A_2,...,A_n,满足A1≤A2≤A3...≤AnA_1 \le A_2 \le A_3 ... \
2015-03-22 17:07:32 760
原创 用栈将递归转化为非递归
在竞赛中如果系统栈很小的话,过深的递归会让栈溢出,这个时候我们就要自己手写栈,将递归转化成手工栈。 方法其实也很简单。 基本思路上,我们就是用栈不断的pop,push。但是何时push,何时pop呢? 在《算法导论》上对深度优先遍历树的讲解中,在深度遍历中,会对每个节点进行染色,白色为没有被访问过;灰色为被访问过,但是该节点的所有子树还没有完成访问;黑色,节点被访问过,而且该节点的所有子树都被
2015-03-16 08:40:05 3980
原创 UVAL 3486 Cells DFS时间戳
题意:给出一颗树。有N个询问,每个询问有两个节点,判断前面的节点是否是后面节点的祖先。 思路:首先要注意到题目中最后树总节点的个数上限为20000000,而对时限是3s,所以算法的复杂度基本上确定为线性。 起初想的是用离线的Tarjan的LCA算法,直接求出两点的LCA,判断LCA是否和前面一个节点相等。然后RE了。最后仔细考虑,觉得应该是递归爆栈了,转换了写人工栈,时间变成了TLE,说明这个算
2015-03-16 08:20:58 1115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人