欢迎辞

欢迎来到“笃志以砺,决起而飞”!
如果您是第一次来到本站,建议访问本站导读以便更快地了解本站。
如果您喜欢本站,欢迎订阅

 

2012 年二月
« 一  
 12345
6789101112
13141516171819
20212223242526
272829 

三色二叉树 解题报告

本解题报告的版权归 Ceeji 所有,转载请注明并保留本注释。 问题描述 一棵二叉树可以按照如下规则表示成一个由0、1、2组成的字符序列,我们称之为“二叉树序列S”: 例如,下图所表示的二叉树可以用二叉树序列S=21200110来表示。 你的任务是要对一棵二叉树的节点进行染色。每个节点可以被染成红色、绿色或蓝色。并且,一个节点与其子节点的颜色必须不同,如果该节点有两个子节点,那么这两个子节点的颜色也必须不相同。给定一棵二叉树的二叉树序列,请求出这棵树中最多和最少有多少个点能够被染成绿色。

输入文件 输入文件名:TRO.IN 输入文件仅有一行,不超过10000个字符,表示一个二叉树序列。

输出文件 输出文件名:TRO.OUT 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色。

样例输入 1122002010

样例输出 5 2 思路分析 本解题报告的版权归 Ceeji 所有,转载请注明并保留本注释。 简单的树形动态规划。这三种颜色是平级的。所谓多少个点能够被染成绿色,其实染成什么色都一样。对于一颗树,分为两种情况考虑:1、父亲染成绿色,则数 量为两个子树不染成绿色的数量之和+1。2、父亲不染成绿色,则数量为两个子树一个染成绿色,另一个不染成绿色的数量之和的最大值或最小值。 这个题目的建树过程也需要注意。

完整代码

  //By Ceeji  //Date: 2009-3-12  //HAOI test 2 - Problem 2  //Type: Tree DP  //State: Accepted  Program tro;  Type node=record              l,r:longint;            end;  Var str:ansistring;      ch:char;      i,j,k,len,n,key,nn:longint;      a:array[1..30000]of node; // tree      dp:array[1..30000,1..4]of longint; //1: has green 2:not has green      b:array[1..30000]of boolean;  Function max(i,j:longint):longint;  begin      if i>j then exit(i) else exit(j);  end;  Function min(i,j:longint):longint;  begin      if i<j then exit(i) else exit(j);  end;  Procedure maketree(j:longint);  var c:char;  begin      c:=str[n];      if c=’0′ then  [...]

Count & 树的同构 解题报告

之所以两道题放在一起,就是因为他们很相似。 本解题报告版权归 Ceeji 所有,转载请注名出处并保留本注释。 题目一:Count 大项堆是具有如下性质的二叉树: 1.它的任意一个父亲节点的权值总是比孩子的权值要大 2.它是一颗完全二叉树 先给定这个堆的节点个数N,假如每个节点的权值都为在1—N之间的整数且各不相同,求可能的大项堆的个数。当然,这个个数可能很多,这里只要求这个个数模K即可。 输入: 两个用空格隔开的整数N和Q(N<30,Q<10^9) 输出: 可能的大项堆的个数模Q 输入样例: 3 1000 输出样例: 2

题目二:树的同构 本解题报告版权归 Ceeji 所有,转载请注名出处并保留本注释。 排序二叉树是我们熟悉的一种数据结构,这里提到的排序二叉树都是指根的关键字比左 子树上的所有点都大,比右子树上的都小(假定不存在相同的关键字)的排序二叉树。如果 给定一个输入序列,按照这个序列依次将各个结点插入,我们就得到了一棵排序二叉树。比 如输入序列 4 2 1 3 5,对应如下排序二叉树: 2 4 5 1 3 而输入序列4 5 2 1 3 以及4 2 5 1 3都对应同样的树,我们说这三个序列同构。现在给定 一个长度为N的输入序列,求与之同构的序列有多少个(包括这个序列本身)。由于问题的 答案可能比较大,只要求输出答案 mod 10,007的结果。 Input 第1行:一个正整数N,即输入序列长度。 第2行:N个1—N之间的正整数,数字相互之间不重复。 Output 仅有一行,即同构序列数 [...]