首页 > 其他分享 >一则求总贡献的例题——联考题引发的思考

一则求总贡献的例题——联考题引发的思考

时间:2023-11-04 22:25:28浏览次数:29  
标签:mathbb 例题 联考题 sum nE dfrac1 forall 一则 递推

对于一些求总贡献的题,与许多人的常识相反,直接求期望往往比求总和更容易. 以今天联考 T1 的一个环节为例.

【例】对排列 \(P_n\),定义 \(C(P_n):=\left|\{i:P_j>P_i,\ \forall j<i\}\right|\),即其前缀最小值序列的不同数个数. 给定 \(n\),求全部 \(n!\) 个排列 \(P_n\) 的 \((-1)^{C(P_n)}\) 之和.

【解】设所求答案为 \(n!E_n\),则 \(E_n\) 是期望值. 不难写出递推式

\[E_n=-\dfrac1n\sum_{i=1}^nE_{i-1},\ \forall n\in\mathbb{N}^*, \]

其含义是枚举第一个位置放 \(i\),贡献一个因子 \((-1)\) 并覆盖后面 \(>i\) 的数,相当于只有 \(<i\) 的数有贡献.

初始条件为 \(E_0=1\),可得 \(E_1=-1\),恰好抵消,因此后面都是 \(E_i=0\). 这就解决了本题.


如果你不喜欢猜答案,也可以正儿八经地去解这个递推式,并不复杂.

由于 \(\dfrac1n\) 不好处理,我们把 \(n\) 乘到左边(这样同时使递推式成立的范围扩大了):

\[nE_n=-\sum_{i=0}^{n-1}E_i,\ \forall n\in\mathbb{Z}. \]

对 \(n\ge0\),两边取差分得

\[(n+1)E_{n+1}-nE_n=-E_n,\ \forall n\in\mathbb{N}^*, \]

\[E_{n+1}=\dfrac{n-1}{n+1}E_n,\ \forall n\in\mathbb{N}^*. \]

当初值为 \(E_0=1\) 时 \(E_1=-1\)、\(E_2=0\),后面便都是 \(0\).


当然,既然 gf 可解万物,为什么不试试呢(

对乘过 \(n\) 的递推式取 gf,两边分别化简得

\[zG'(z)=-\dfrac{z}{1-z}G(z), \]

\[G'(z)+\dfrac1{1-z}G(z)=0. \]

这是个一阶齐次线性微分方程,将其化为

\[\dfrac{G'(z)}{G(z)}=\dfrac1{z-1} \]

\[\left(\ln G(z)\right)'=\dfrac1{z-1} \]

两边积分有

\[\ln G(z)=\int\dfrac1{z-1}\mathrm{d}z. \]

右边的积分等于 \(\ln(z-1)+C_0\),所以 \(G(z)=C_1(z-1)\). 再利用 \(G(0)=E_0=1\) 得到 \(G(z)=1-z\).(这里函数取值是否有意义其实是有问题的,但并不妨碍我们求得结果.)

仅供娱乐,毕竟 OI 考场上解微分方程实在有点喜感(


另一个例子是 xcs 的远古模拟赛题,可转化为求解

\[E_n=1+\dfrac1n\sum_{i=1}^nE_{i-1}. \]

与本题如出一辙.

标签:mathbb,例题,联考题,sum,nE,dfrac1,forall,一则,递推
From: https://www.cnblogs.com/abcc/p/problem1.html

相关文章

  • 【每日例题】蓝桥杯 c++ 串的处理
    串的处理题目题目描述在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1.把每个单词的首字母变为大写。 2.把数字与字母之间用下划线字符(_)分开,使得更清晰3.把单词中间有多个空格的调整为1个空格。输入描......
  • 【每日例题】蓝桥杯 c++ 最大降雨量
    最大降雨量题目本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。这个法术需要用到他手中的49张法术符,上面分别写着1至49这49个数字。法术—共持续7周,每天小明都要使用—张法术符,法术符不能......
  • 【每日例题】蓝桥杯 c++ 最小的或运算
    最小的或运算题目问题描述给定整数a,b,求最小的整数工,满足a|a=ba,其中|表示或运算。输入格式第—行包含2个正整数a,b.输出格式输出共1行,包含1个整数,表示最终答案。样例输入样例输出评测数据规模对于所有测评数据,0<a,b<264.最小的或运算思路分析1.要求最小的x满足a|x=b|x,......
  • 【每日例题】蓝桥杯 c++ 奖学金
    奖学金题目蓝桥杯奖学金题目分析由题目可知,该题涉及到五个属性:学号,语文分数,数学分数,英语分数,总分;由于我们需要通过输入语文、数学、英语分数,经过操作后,输出学号与总分,所以我们可以通过结构体进行存储。       下面是有关结构体的信息:结构体信息   2.......
  • C语言经典例题7加解析
    1、输入长方形的长和寬,编程求该长方形的周长和面积#include<stdio.h>intmain()(floatlength,width;floatperimeter,area;//输入长方形的长和宽printf(“请输入长方形的长:“);scant(“%r”,&length);printf(”请输入长方形的宽:“);scanf(“%r”,&width);//计算周长和面......
  • 【每日例题】蓝桥杯 C语言 凯撒加密
    凯撒加密题目题目描述给定一个单词,请使用凯撒密码将这个单词加密。凯撒密码是—种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即α变为d,b变为e,·,w变为z,Z变为a,g变为b,z变为c。输入描述输入格式:输入一行,包含一个单词,单词中只包含小写英文字母,单词中......
  • Switch case:例题
    includeusingnamespacestd;intmain(){inta[101],max=0,n=0,b;for(inti=0;i<=4;i++){cin>>a[i];}cin>>n;switch(n){case1:for(inti=0;i<5;i++){for(intj=i;j<5;j++){if(a[j]>a[i])swap(a[i],a[j]);}cout<<a[i]<<&q......
  • 10.28/例题2
    #include<bits/stdc++.h>usingnamespacestd;inta[6],n,sum=0,p,t;voidone(){ for(inti=0;i<5;i++){for(intj=0;j<5-i;j++){if(a[j]<a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t;}......
  • 【每日例题】 蓝桥杯 c++ 考勤刷卡
    考勤刷卡题目小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在—天中员工刷过—次卡,就认为他到岗了。现在小蓝导出了—天中所有员工的刷卡记录,请将所有到岗员工的员工......
  • splay + 垃圾回收 知识点与例题的简要讲解
    splay简要讲解前置芝士:普通二叉树splaytree是一个越处理越灵活的数据结构,通过splay(伸展)操作,使整棵树的单次查询时间复杂度接近于O(logn),整棵树的高度也接近于logn根据上面的这句话,很明显能看出splay与普通二叉树的区别普通二叉树经过多次处理后,很容易退化成链,单......