2016.12.10【初中部 NOIP提高C组】模拟赛

t1:不讲

t2:不讲

t3:求最长的长度显然,分解质因数即可,那求方案呢?

n个数

例:

2 3 5 7

可组{

2 3 5 7   2 3 7 5   2 5 3 7   2 5 7 3   2 7 3 5   2 7 5 3

...

...

...

答案=24

例:

2 3 3 5

可组{

2 3 3 5   2 3 5 3   2 5 3 3   5 2 3 3   5 3 2 3   5 3 3 2

3 2 3 5   3 2 5 3   3 3 2 5   3 3 5 2   3 5 2 3   3 5 3 2   

答案=12

那么重复了一个,答案就少了一半

再例:

2 2 3 3

可组{

2 2 3 3   2 3 2 3   2 3 3 2   3 2 2 3   3 2 3 2   3 3 2 2

·答案又少了一半,但这是为什么呢?


·通过上面的找规律,可以得出如下的一个公式

·有重复元素的排列问题的方案数为:

·N!/m1!m2!m3!……mk!

·其中m1表示第一种元素的个数,m2表示第二种元素的个数,mk表示第k种元素的个数

·如何证明?

·假设如果没有重复元素的话,则排列的方案数为n!,但某一种元素的排列会重复,就好像上面的找规律,而这些重复元素组成的方案数就是它的个数的阶乘,我们只取其中一种,自然除以它的阶乘

·(想弄懂证明需对排列数有一定了解)



T4:

·这道题挺有意思,首先需明白,为什么根据前序和后序不能确定中序

·原因在于前序中的节点不能确定是左子树还是右子树


解题如下:

·先序遍历是根左右,后序遍历是左右根,那把后序遍历反过来便变成了根右左

·易证,这里不给出证明

·那么根据根左右和根右左,可以推知当前子树的根以及左子树的根和右子树的根

·如果当前坐子树的根与右子树的根相同的话,答案便可以乘2

·易证

·依次递归即可

·注意,如果当根相同时,需要另起一个递归,不能再像上述递归左子树再递归右子树,而是直接递归


·这里再介绍一种方法(首先需要明白上述方法):

·根据上述方法,我们知道,当一颗子树的根以及左根和右根不确定时,答案会变动

·那么根据这一性质,我们直接判断前序当中的两两字符,看看是否也出现在后序,如果出现直接乘2

·与上述方法思路一样, 不过实现会简单很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值