
ACM_数据结构
文章平均质量分 54
dilemma729
这个作者很懒,什么都没留下…
展开
-
POJ 1990-MooFest(树状数组)
题目大意:有N(1要求所有的声音和,那么每次对话只基于一头牛求就可以,可以基于听力值大的那头牛,首先对所有牛排序,根据听力值的大小。排序之后,每头牛只用求和在它前面的牛对话发出的声音,所有这样的声音加起来就是答案所求。用两个树状数组来完成这个操作。对于每头牛,关于它的和分两部分求,第一部分是位置小于它的,第二部分是位置大于它的。第一个树状数组来存每头牛的位置,第二个树状数组原创 2015-02-24 18:00:19 · 480 阅读 · 0 评论 -
UVA 536-Tree Recovery(二叉树恢复)
题目大意:给出二叉树的前序和中序遍历,输出后序遍历。递归处理,每次找到当前的根结点,然后递归左子树和右子树。#include#include#includechar a[30];char b[30];int c[370];void dfs(int i,int j,int u);int main(void){ int i,lo; while(scanf("原创 2015-02-24 19:25:10 · 492 阅读 · 0 评论 -
UVA 548-Tree(二叉树)
题目大意:给出二叉树的中序遍历和后序遍历,求一个叶子结点,它到根的距离最短,若有多个解叶子权值应该最小。递归遍历,每次找到当次递归的根然后递归左子树和右子树,后序遍历的最后一个结点就是根,在递归过程中记录根到当前结点的距离,这样可以在递归到达叶子时就能得到那个叶子结点到根的距离。这样可以不用恢复二叉树。#include#include#includeint a[100原创 2015-02-24 18:26:45 · 454 阅读 · 0 评论 -
UVA 1513-Movie collection(树状数组)
题目大意:有n个电影碟,要看m次电影(1用数组模拟栈,只不过栈有些元素可能是空的,每次拿出后放在栈顶,并随时更新每个电影对应的在栈中的位置,求在它上面的电影数就是对数组求和。每次拿出把这个位置的值置为0,即减1,在栈顶放入就在栈顶加1,最终求和。#include#includeint a[100010];int b[35];int c[275000];int an原创 2015-02-24 19:37:13 · 459 阅读 · 0 评论 -
UVA 12166-Equilibrium Mobile(推导结论)
题目大意:给出一棵二叉树,整个树是天平,每个结点有一个砝码或一个天平,对于任意一个天平,绳子都在中点,每个砝码都有重量,求最少修改多少个砝码的重量使得整个天平平衡。本题的关键在于一个结论:若最终天平平衡,则在同一个深度的所有结点,无论它的祖先结点是什么,重量都应该相同。并且上一层的重量应该是下一层的2倍。证明其实是显然的。。之后只需要把所有的结点分块,然后取结点最多的块,其余的结点原创 2015-02-27 13:47:41 · 1479 阅读 · 0 评论 -
UVA 442-Matrix Chain Multiplication(栈的运用)
题目大意:给出一个矩阵乘法式子,其中每个矩阵的行列已知,求最终的结果。表达式的运算,关于栈的运用,运算过程中碰到两个不匹配的矩阵时,则矩阵序列错误。#include#include#includeint a[60][3];char b[300];int c[300][2];int top=0;int main(void){ int i,n,arow,aco原创 2015-04-28 22:40:49 · 623 阅读 · 0 评论