剩余时间6天。 这几天在复习: 1、网络流 2、二分图匹配 3、线段树 4、树状数组 5、括号序列
近期复习: 1、最短路 2、动态规划 3、线段树 4、网络流 5、二分图匹配
| ||||||
剩余时间6天。 这几天在复习: 1、网络流 2、二分图匹配 3、线段树 4、树状数组 5、括号序列 近期复习: 1、最短路 2、动态规划 3、线段树 4、网络流 5、二分图匹配 写模拟赛剩余题目和POI动态规划题目。 本解题报告的版权归 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 [...] 之所以两道题放在一起,就是因为他们很相似。 本解题报告版权归 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 仅有一行,即同构序列数 [...] 本解题报告由 Ceeji 编著,转载请注明出处。 [题目描述] Genotype 是一个有限的基因序列。它是由大写的英文字母A-Z组成,不同的字母表示不同种类的基因。一个基因可以分化成为一对新的基因。这种分化被一个定义的规则集 合所控制。每个分化的规则可以用三个大写字母A1A2A3表示,含义为基因A1可以分化成A2A3。我们用S代表特种基因,繁殖genotype是从特种 基因序列开始。根据给定的规则,它由被选择控制规则对基因不断进行繁殖而成。 任务 从文本文件GEN.IN 读入一个定义的规则集和一个想生成的genotypes 单词序列。对每一个给定的 genotype,根据给定的分化规则,检查是否它能从某一个确定特种基因序列生成,如果能,找到最小的序列长度,将结果写入文本文件GEN.OUT。 输入 在文件GEN.IN 的第一行有一个整数n, 1 <= n <= 10000. 下面n 每一行为一个分化规则. 这些规则都由包含A – Z的三个大写字母组成. 接下来有一个整数k, 1 <= k <= 10000. 接下来的k 行有一个 genotype. Genotype由没有空格的单词组成,最多100 个英文大写字母. 输出 在文件GEN.OUT中有k行,在第I行应写入: 一个正整数――需要生成第I个genotypes的最小长度;或者单词 NIE, 如果不能生成对应的genotype。 GEN.IN: 6 SAB SBC SAA ACA BCC CBC 3 ABBCAAABCA CCC BA GEN.OUT: [...] | ||||||
Copyright © 2012 笃志以砺,决起而飞 - All Rights Reserved. LOVE YOU FOREVER. Powered by WordPress & Atahualpa 36 queries. 0.296 seconds. |
||||||
近期评论