- 博客(16)
- 收藏
- 关注
原创 HDU 3436 Queue-jumpers
从一开始学离散化就对它没有半毛钱好感,感觉出这种题纯属恶心人。 可以将Top x全部取出来然后离散化,缩点。剩下的就是伸展了,不再赘述。 也有人拿线段树过,一直没有想明白. . . #include #include #include #include #include #include #include #include #include #pragma comment
2014-05-30 20:27:37 887
原创 HDU 1890 Robotic Sort 伸展树的区间反转与延迟标记
延迟标记像极了线段书,不再多说。 区间反转在树伸展到位之后,也变成了简单的递归交换左右儿子。 愈发感觉到伸展树简直太漂亮了,伸展操作更是诱惑到不行 ,总之数据结构太有魅力了。 比较简单,就直接上模板了。 #include #include #include #include #include #include #include #include #include #pr
2014-05-28 20:12:58 1005
原创 ZOJ 3765 Lights Splay Tree的几种基本操作
区间的查询,点修改,插入和删除。先姑且当作模板吧,略挫,慢慢补充,慢慢优化。 #include #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000"); #define EPS (1e-8) #d
2014-05-27 19:51:38 1043
原创 初涉A*剪枝
挖坑防忘,天亮补题解。 #include #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000"); #define EPS (1e-8) #define LL long long #define UL
2014-05-26 01:04:41 1634
原创 初涉Splay Tree
Splay Tree 支持的之中操作。 插入,删除,求前驱和后即,区间更新与查询。 先来一发Splay Tree最基础的操作——伸展。 #include #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:102400
2014-05-24 20:02:13 1038
原创 HDU 1195 Open the Lock
双向BFS: 分别在 起点 和 终点同时进行BFS。 一般地,BFS随着层数的增加,状态数会越来越多,也就是状态数与层数呈正相关。如下图,: 若从两端同时进行BFS ,则有 显然减少的哪一些区域即为减掉的那些不必要的状态。 #include #include #include #include #include #include #include #include
2014-05-08 12:36:45 926
原创 HDU 1010 Tempter of Bone DFS + 奇偶剪枝
奇偶剪枝: 对于从起始点 s 到达 终点 e,走且只走 t 步的可达性问题的一种剪枝策略。 如下列矩阵 : 从任意 0 到达 任意 0,所需步数均为偶数,到达任意 1 ,均为奇数。反之亦然 所以有,若s走且只走 t 步可到达e,则必有t >= abs(s.x - e.x) + abs(s.y - e.y),且 (t&1) == ((abs(s.x - e.x) + abs(s.y -
2014-05-08 10:32:37 848
原创 UVALive 6525 Attacking rooks
将行中连续的' . '当作X集的一个点,列中连续的’ . ‘看成Y集中的一个点,然后把每一个’ . ‘看成一条边,连接Xi,Yj。 则问题转化成求此二分的最大匹配数。每找到一条匹配边的意义是找到了一个点放置一个,并且覆盖了所在的连续的行和列。 所以答案即为此二分图的最大匹配。 #include #include #include #include #include #inclu
2014-05-07 12:39:48 886
原创 二分图小结
此文意在整理二分图的各种变形。 HDU 1068 Girls and Boys 最基础的二分图匹配问题,简单的求最大匹配数。 HDU 1150 Machine Schedule 无向图 最小点集覆盖 = 最大匹配。 把作业看成边,把机器看成点。 无向图的最小点集覆盖是指存点集K,使得图中的所有边都与K中的某些点相连 ,且去除K任意一点就不再满足前述条件。 HD
2014-05-06 15:49:57 815
原创 HDU 4044 GeoDefense
设 t 为根节点到某一叶子节点路径上的权值和,则应让最小的 t 尽量的大。 坑点在于存在价格为零的商品。 一维倒序递推就失去了意义,无法保证每组选且只选一个。 另外可以选择不建立任何塔防,也就是说每个节点都多了一个price和power均为零的商品。 dp[s][k] 表示在 s 姐点投入 k 时所能取得的最大值。 #include #include #include #inclu
2014-05-06 11:18:06 1140
原创 POJ 2468 Apple Tree 树上瞎搞分组背包
昨晚Debug了好久始终找不出哪里错了,今早再一看发现自己已荣升逗比Beta 2.0 Version. 个人感觉此题为HDU 4003 的弱化版。 把每棵子树都看成一类商品,在每类商品中至多选一件。则问题转化为最基本的分组背包问题。 dp[s][c][k] c == 1时,表示在s结点不返回时走K的最大收益,c == 0时,表示在s结点重新返回时走k步的最大收益。 可以dfs从底到顶更新d
2014-05-05 09:51:49 1322
原创 HDU 3033 I love sneakers! 分组背包
我是个逗比。。。真心不是搞算法的料 不太中规中矩的分组背包,分组至少选一件商品。dp[i][j] 可以由当前dp[i-1][j-c] 和 dp[ i ][j-c]更新得到。 #include #include #include #include #include #include #include #include #include #pragma comment(link
2014-05-04 21:08:12 756
原创 哈夫曼树 POJ 3253 Fence Repair
竟然做过原题,一眼看上去竟然没感觉。。。 哈夫曼树定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 1、路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规
2014-05-01 14:08:46 1050
原创 HDU 2886 Lou 1 Zhuang
思维好重要。。 对于n+m == k , 当n == m || abs(n-m) == 1 时n*m取得最大值。 则对于k分解成若干个数,则最后有若干个3和若干个2。 又有,三个2换成两个3,和不变积增大。所以最后最多之会有两个2,剩下的由3组成。 则题目变成了 求3^m。 #include #include #include #include #include #includ
2014-05-01 00:41:44 1454 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人