![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 72
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
POJ 2499 Binary Tree
刚开始天真的用模拟的从1,1到目标结点,结果当然是暴栈了然后发现可以从目标结点往1,1走:1.当前结点a>b说明是父节点的左儿子(fa+fb,fb),就左计数器自增,然后a=a-b;2.当前结点a然高高兴兴的提交上去结果TLE了.主要是因为减速度还是太差应付不了这种情况 目标结点100000000,1最后发现可以用取模快速的到达转折点来求:1.当前结点a>b说明是父原创 2013-04-13 11:00:32 · 497 阅读 · 0 评论 -
ZOJ 2334 Monkey King
学了左偏树.这题用左偏树来合并集合,并查集判是否在同一集合,无敌组合.以下内容转自: http://www.cppblog.com/guogangj/archive/2009/10/30/99833.html树这个数据结构内容真的很多,上一节所讲的二叉堆,其实就是一颗二叉树,这次讲的左偏树(又叫“左翼堆”),也是树。二叉堆是个很不错的数据结构,因为它非常便于理解,而且仅原创 2013-05-16 11:25:16 · 762 阅读 · 0 评论 -
ZOJ 3170 7 Levels of Binary Search Tree
题目很简单,主要是建树要思考下.我用的是队列,按层次来建的.#include #include #include #include #include using namespace std;const int maxn = 130;int treVal[maxn], tree[maxn];int n, L;struct node{ int idx, cnt, l,原创 2013-05-19 09:05:31 · 524 阅读 · 0 评论 -
ZOJ 2346 Shortest Prefixes(trie树)
在每一个结点里存一个计数器,添加的时候当每次这个结点被访问到时候,自增计数器.然后对每一个单词进行一次查找,找到字母路径上第一个计数器为1的结点为止,这样就保证了最短的唯一前缀.#include #include #include #include #include #include #include using namespace std;struct node{ in原创 2013-05-18 22:45:38 · 638 阅读 · 0 评论 -
ZOJ 1700 Falling Leaves
乱搞竟然让我搞出来了.首先把所有的结点值保存下来排序.然后从第二行tree[i]开始找tree[i][j] 在第一行tree[i-1]第一个大于tree[i][j]的值.找到位置之后找左右位置,左右儿子只能是未被选的.如果两个字母在最后的有序序列位置之间还有没有被选的字母(图中的M和H就是这种关系),说明这个左边的字母是不能作为左儿子的,同理右儿子也一样.每完成一行就把前一行的字母原创 2013-05-20 07:42:08 · 483 阅读 · 0 评论 -
ZOJ 1259 Rails
主要用到了栈.规定每节车厢只能进出栈一次.所以可以对于每一节目标车厢tar[i],用j表示当前要入栈的车厢.如果tar[i]>=j 表示tar[i]只能从未入栈的车厢中找,直到找到直接拿走,中间的那些车厢全部入栈,如果tar[i]#include #include using namespace std;const int maxn = 1005;int target[原创 2013-05-21 16:40:51 · 532 阅读 · 0 评论