括号序列合法性校验与小添加算法.pdfVIP

  • 0
  • 0
  • 约2.4千字
  • 约 3页
  • 2026-02-04 发布于北京
  • 举报

信息赛模拟试题

题目概览

题目名称括号序列集合划分加分二叉树

提交文件名bracksubsetsubtree

输入文件名brack.insubset.insubtree.in

输出文件名brack.outsubset.outsubtree.out

每个测试点时限1秒1秒1秒

运行内存上限128M128M128M

测试点数目10105

每个测试点分值101020

题目类型传统传统传统

括号序列

【问题描述】

我们用以下规则定义一个合法的括号序列:

(1)空序列是合法的

(2)假如S是一个合法的序列,则(S)和[S]都是合法的

(3)假如A和B都是合法的,那么AB和BA也是合法的

例如以下是合法的括号序列:

(),[],(()),([]),()[],()[()]

以下是不合法括号序列的:

(,[,],)(,([]),([()

现在给定一些由(,),[,,]构成的序列,请添加尽量少的括号,得到一个

合法的括号序列。

【输入】

输入包括号序列S。含最多100个字符(四种字符:(,),[and]),都放

在一行,中间没有其他多余字符。

【输出】

使括号序列S成为合法序列需要添加最少的括号数量。

【样例输入】

([()

【样例输出】

2

【样例说明】

最少添加2个括号可以得到合法的序列:()[()]或([()])

【数据范围】

S的长度=100(最多100个字符)。

集合划分

对于从1到N(1=N=39)的连续整数集合,划分成两个子集合,使得每个集合的数

字之和相等。

举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是

相等的:{3}and{1,2}

这是唯一的一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案

总数)。

如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分法的子集合各数

字和是相等的:

{1,6,7}and{2,3,4,5};{2,5,7}and{1,3,4,6};

{3,4,7}and{1,2,5,6};{1,2,4,7}and{3,5,6}

【输入】

一个正整数N,1=N=39

【输出】

一个数,划分集合的方法数。

【样例输入】

7

【样例输出】

4

加分二叉树(subtree)

【问题描述】

设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中

数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),

记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一

棵子树subtree(也包含tree本身)的加分计算方法如下:

subtree的左子树的加分×subtree的右子树的加分+subtree的根

的分数;

若某个子树为空,规定其加分为1,叶子的加分就是叶节点本身

文档评论(0)

1亿VIP精品文档

相关文档