[???] 对一个组合题的胡乱证明

Problem

对于一个数轴,从原点走\(n(n \% 2 = 0)\)步回到原点的不同方案数.

向左走记为\(L\),向右走记为\(R\),当且仅当组成的走法序列\(\begin{Bmatrix}\overbrace{LRR......LRL}^n\end{Bmatrix}\)不同时,认为是两种不同方案.

Solution

答案

\(C_{n}^{\frac{n}{2}}\)

解法

考虑对决策进行划分组合来统计方案数.

记左右走法各为一种决策元素,记向左决策元素为\(L\),向右决策元素为\(R\),进行n次决策,形成一个形如\(S=\begin{Bmatrix}\overbrace{LRR......LRL}^n\end{Bmatrix}\)的决策序列(是有序的一个序列,不是集合).

记\(num(L/R,S)\)为一个决策序列\(S\)进行\(L/R\)类型决策的总数量,\(point(x,S)\)为从\(x\)点进行\(S\)决策序列后到达的点.

引理1

对于\(\forall S \wedge point(0,S) = (0)\Rightarrow num(L,S) = num(R,S) = \frac{n}{2}\).

引理2

对于\(\forall S\wedge num(L,S) = num(R,S)\)改变\(S=\begin{Bmatrix}\overbrace{LRR......LRL}^n\end{Bmatrix}\)中\(\forall L \in S\)或\(\forall R\in S\)

在序列\(S\)中的顺序成为\(\Delta S\),都有\(point(0,\Delta S) = (0)\).

对引理2的证明

对于一个\(S \Rightarrow num(L,S) = p, num(R,S) = q\),

考虑序列中每一个决策必然立即对答案造成影响且决策无后效性,

所以对\(point(0,S)\)造成的影响为从\(0\)向左\(p\)步,向右\(q\)步,

改变序列顺序不影响\(p,q\)的值,最终一定到达\((q-p)\)点,

因为\(num(L,S) = num(R,S)\),所以\(q-p=0\),

所以一定到达\((0)\)点,所以引理2得证.

对引理1的证明

考虑引理2:

有\(\forall S=\begin{Bmatrix}\overbrace{LRR......LRL}^n\end{Bmatrix}\Rightarrow S=\begin{Bmatrix}\overbrace{LLL......LL}^{num(L,S)}\overbrace{RRR......RR}^{num(R,S)}\end{Bmatrix}\),

记\(S \Rightarrow num(L,S) = p, num(R,S) = q\),

有\(point(0,S)=(q-p)\) 若有\(point(0,S)=(0)\)则有\((q-p)=(0)\)即\(q=p\),

得\(num(L,S) = num(R,S)\)又有\(num(L,S) + num(R,S)=n\),

易得\(num(L,S) = num(R,S) = \frac{n}{2}\),引理2得证.

对答案正确性的证明

考虑引理1,有\(num(L,S) = num(R,S) = \frac{n}{2}\),

对\(L/R\)中一种决策在\(n\)个决策序列位置中任意选取\(\frac{n}{2}\)个位置进行放置,

易知有\(C_{n}^{\frac{n}{2}}\)种选法.

考虑引理1,有\(num(L,S) = num(R,S) = \frac{n}{2}\),

则剩余\(\frac{n}{2}\)的决策序列位置必然全部是另一种未选决策\(L/R\),只有\(1\)种选法.

考虑引理2,对于一个决策序列\(S\)中改变决策顺序不影响\(point(0,S)\)的取值,

所以上文两种操作改变序列顺序后均不影响最终答案,均为\((0)\),

所以答案的正确性得证.

答案即为\(1\times C_{n}^{\frac{n}{2}}=C_{n}^{\frac{n}{2}}\).

原文地址:https://www.cnblogs.com/colorfulmist/p/10304549.html

时间: 2024-10-30 10:41:19

[???] 对一个组合题的胡乱证明的相关文章

一个组合问题

今天Mayuyu遇到了一道组合问题,题目描述如下. 题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4837 题意:给定一个的矩阵,在这个矩阵中任意选取3点,能构成多少个三角形? 分析:这个题明显是一个组合问题,利用容斥的思想.在的矩阵中一共有个点,那么有种 选择,在这种选择中三点共线的情况是不合法的,不合法主要分两种情况. (1)处于同一斜线上 枚举的矩形,那么对角线上的两点已经固定,在这两点中间选一个点即可,我们知道

(关于一个算法题的两点新思路)给你一组字符串 如 {5,2,3,2,4,5,1,2,1,5},让你输出里面出现次数最多且数值最大的一个,出现几次

在网上看到一个算法题,不是很难,搜一下也有解决办法,但是一般都是几层for循环,试着写了下 /** * 给你一组字符串 如 {5,2,3,2,4,5,1,2,1,5},让你输出里面出现次数最多且数值最大的一个,出现几次 * 优点:时间复杂度为O(n) * 缺点:产生一些多余的空间,如 6,7,8没有的数也会分配一个数组空间,但是基本可以忽略 * 限制:需要预先知道最大的值是多少,或者说小于多少,这样才好确定预先分配一个数组长度是多少 */ public static void method1()

WPF DataGrid绑定一个组合列

WPF DataGrid绑定一个组合列 前台: <Page.Resources>        <local:InfoConverter x:Key="converter"></local:InfoConverter>    </Page.Resources> <DataGridTextColumn>                        <DataGridTextColumn.Binding>      

刷题向》关于搜索+tarjan的奇怪组合题 BZOJ1194 (normal+)

关于这道题,其实看懂了的话还是比较好写的,只是题目实在又臭又长,没有让人读下去的勇气. 给出题目翻译: 给你S张图, 每张图有M个点,其中M个点中有N个是特殊单位,会给出. 每个点又有0.1两条边指向其他点. 这样我们每次从0这个点开始,选择向0或者向1走,是不是可以把路径表示成01串的形式捏? 每次我们在模拟路径时,遇到特殊单位就会输出这串01串. 那么图的包含关系定义为:A图输出的所有01串都可以在B中输出(即使是一样的图),这时就称B是A的亲爹: 那么你的任务是找出图中最长的家族关系. 当

从一个二级题来看成员函数重载运算符和友元函数重载运算符

先上题:下列运算符都可以被友元函数重载的是: A)=,+,-,\ B)[],+,(),new C)->,+,*,>> D)<<,>>,+,* 正确答案为D 我们知道,在运算符重载,友元函数运算符重载函数与成员运算符重载函数的区别是:友元函数没有this指针,而成员函数有,因此,在两个操作数的重载中友元函数有两个参数,而成员函数只有一个. 因此,我们可以总结如下: 1.对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中

一个算法题,又是小明。囧

第一次写博客文章,有点小紧张.若是有什么错误还望众大神指点.为了备战下个月的蓝桥杯,苦战算法题,觉得有一道题不错,就拿来分享一下. 原文如下:地宫取宝,X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出口在右下角.小明被带到地宫的入口,国王要求他只能向右或向下行走.走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿).当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可

一个概率题

(前面的话:启发式方法这本书里说过,问题不应该提在预设或学习的理论下,而应该是一个孤立的题,由人去分析和决定用到什么方法和知识.) 来自可汗公开课: The average male drinks 2L of water when active outdoors(with a standard deviation of .7L). You are planning a full day nature trip for 50 men and will bring 110L of water. Wh

___________一个简单题带来的启示____________________________

Problem Description There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2). Input Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000). Output Print the word "yes" if

C 解决百度知道的一个高中题

前言 今天看见一道百度知道上提问,是这样的. 仔细算了一下, 花了30min.才整出来了,估计现在回去参加高考,数学及格都悬.有时候想做这样的题有什么用, 学这些东西有什么意义,在这种方面浪费时间有什么值得的. 后来想出来, 开心就好! 想太多,考虑太多心累.我们开心就好. 正文 第一部分 从代码说开来 采用的主要思路是穷举法,穷举完之后,再判断. 思考了一下,主要用 char str[5]; 保存这个这个串. 采用下面函数检测这个串 是否是想要的串 #inclue <stdbool.h> /