2011年12月27日
摘要: UVA_297 由于这个题目可以看成是完全四叉树,所以借用了一下线段树的思想,把题目转化成了对区间进行两次染色,然后求最后色块的个数。 当然我的程序写得复杂了,lazy可以不用的,在统计的时候遇到黑色节点就返回即可,只不过这样计数的方式就要稍加变化了。#include<stdio.h>#include<string.h>#define MAXD 4000int tree[MAXD], lazy[MAXD], cur, M, res;char b[1500];void down(int t){ if(lazy[t] == 1) { tree[t] = 1, lazy... 阅读全文
posted @ 2011-12-27 21:24 Staginner 阅读(292) 评论(0) 推荐(0) 编辑
摘要: UVA_548 直观的思路就是先把树建出来,然后再dfs,后来看了别人的解题报告之后发现其实可以不用建树的,因为建树的过程本身也是遍历树的一个过程,这样直接把该求的求出来就好了。 建树的核心思想是一棵子树后序遍历的最后一个值一定是根节点,这样再在中序遍历中找到根节点之后,就可以把这棵子树分成根节点、左子树、右子树这三部分了,继续按这个思想处理左右两棵子树即可完成建树的过程。#include<stdio.h>#include<string.h>#define MAXD 10010#define INF 0x3f3f3f3fint N, min, minv, value[M 阅读全文
posted @ 2011-12-27 20:12 Staginner 阅读(382) 评论(0) 推荐(0) 编辑