【题目】一套全场爆零的好题之却被老师逮个正着

本文深入探讨了一道关于班级作弊行为的复杂数学问题,通过概率论和组合数学的方法,解析了在一系列考试中,如何计算老师抓到始作俑者的期望惩罚量。作者分享了其解题思路,包括枚举策略、容斥原理的应用,以及如何优化算法实现O(n^2)的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不知道谁给了没有看懂B题题面的我勇气滚去看C题。
本人的做法跟wangdy类似。(%%%真正的AK巨佬wangdy)

题目大意

同学们在教室传答案,却被老师逮个正着
全班共有nnn个同学,一学期共有2n2^n2n次考试,每次考试参与传答案的同学都不完全相同。老师每次考试有一半的概率记录这次考试参与传答案的同学名单,也有一半的概率当做什么也没发生。到了期末,老师检查一下自己记下的名单,找出每次都参与了传答案的同学,作为这学期的始作俑者。特别的,如果老师一学期没有记录任何一次考试的传答案名单,则没有学生是始作俑者。
老师对第iii个学生的惩罚系数是正整数aia_iai。期末抓出始作俑者之后,算出始作俑者人数xxx和最大的惩罚系数yyy,对全班施加的惩罚量z=xyz=xyz=xy。特别的,如果没有学生是始作俑者,惩罚量为000
求期末惩罚量的期望E(z)E(z)E(z) 。为了方便,输出E(z)×22nmod  998244353E(z)\times 2^{2^n}\mod 998244353E(z)×22nmod998244353

2⩽n⩽2122\leqslant n\leqslant 2^{12}2n212


思路

nodgd造得一手好数据,本人n方做法跑了4s。

一共有2n2^n2n次考试,每一次考试老师都有记录和不记录两种选择,总的情况就是22n2^{2^n}22n。于是最终答案就是所有情况的惩罚量之和。

考虑枚举始作俑者人数xxx和最大惩罚系数yyy,计算有多少种情况对应x,yx,yx,y。记c1[i]c_1[i]c1[i]为惩罚系数=i=i=i的人数,c2[i]c_2[i]c2[i]为惩罚系数⩽i\leqslant ii的人数。xxx个始作俑者中一定有一个人惩罚系数=y=y=y,且所有人的惩罚系数⩽y\leqslant yy。若c2[y]<xc_2[y]<xc2[y]<x,则合法情况数为000。否则在c1[y]c_1[y]c1[y]个人中选出一个人当作惩罚系数最大的始作俑者,然后在另外c2[y]−1c_2[y]-1c2[y]1个人中选出另外x−1x-1x1个人,方案数为Cc1[y]1Cc2[y]−1x−1C_{c_1[y]}^1C_{c_2[y]-1}^{x-1}Cc1[y]1Cc2[y]1x1。但如果有多个人的惩罚系数都为yyy,这样算就会算重。于是搞一波容斥:
∑k=1c1[y](−1)k−1Cc1[y]kCc2[y]−kx−k\sum_{k=1}^{c_1[y]}(-1)^{k-1}C_{c_1[y]}^kC_{c_2[y]-k}^{x-k}k=1c1[y](1)k1Cc1[y]kCc2[y]kxk

当这xxx个始作俑者确定以后,还要讨论其余n−xn-xnx人的情况。每次考试参与传答案的同学都不完全相同,意味着每次考试唯一对应nnn个同学的一个子集。首先这xxx个始作俑者一定都出现在老师记录名单的每一次考试中,这样的考试有2n−x2^{n-x}2nx次(相当于去掉这xxx个始作俑者,其余n−xn-xnx个同学的子集数),选择的方案数为22n−x2^{2^{n-x}}22nx。但可能有其它的同学出现在选择出来的每一次考试中,而这些同学不是始作俑者,这种选法不合法,需要减掉。于是又搞一波容斥:
∑k=0n−x(−1)k⋅22n−x−kCn−xk\sum_{k=0}^{n-x}(-1)^k\cdot 2^{2^{n-x-k}}C_{n-x}^kk=0nx(1)k22nxkCnxk

于是答案就出来了(x=0x=0x=0时的惩罚量为000,直接跳过):
ans=∑x=1n∑y∈ai(∑k=1c1[y](−1)k−1Cc1[y]kCc2[y]−kx−k)(∑k=0n−x(−1)k⋅22n−x−kCn−xk)xyans=\sum_{x=1}^n\sum_{y\in a_i}\bigg(\sum_{k=1}^{c_1[y]}(-1)^{k-1}C_{c_1[y]}^kC_{c_2[y]-k}^{x-k}\bigg)\bigg(\sum_{k=0}^{n-x}(-1)^k\cdot 2^{2^{n-x-k}}C_{n-x}^k\bigg)xyans=x=1nyai(k=1c1[y](1)k1Cc1[y]kCc2[y]kxk)(k=0nx(1)k22nxkCnxk)xy

虽然有三层循环,但∑y∈ai∑k=1c1[y]\sum\limits_{y\in a_i}\sum\limits_{k=1}^{c_1[y]}yaik=1c1[y]恰好把nnn个同学全部枚举一遍,∑k=0n−x\sum\limits_{k=0}^{n-x}k=0nxyyy无关,因此可以做到O(n2)O(n^2)O(n2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值