福建省队集训 20180712

福建省队集训 20180712

交互题

有一天,汪巨打算归还他欠 ysy 的 1010 个鸡排的一部分。于是他到了鸡排店,发现店里一共有 109 种鸡排,编号为 1 到 109,其中有 a 种鸡排是不辣的,他打算把每种不辣的鸡排买 b 个还给 ysy。

汪巨带着几卡车的鸡排回到学校,把鸡排从包装袋里倒出来,数了一天一夜,发现居然没有 ab 个 鸡排,少了一些。经过分析,他发现有一种鸡排的包装袋破了,所以有一种鸡排少了一些,这种鸡排只 剩下了 x 个(1 ≤ x ≤ b − 1)。

由于鸡排实在太多了,汪巨懒得再数一遍了,他就把鸡排全给了 ysy,并告诉 ysy 少了哪种你自己 数数吧。由于 ysy 是鸽子,他就把这个光荣的任务交给了你。

由于你的脑容量没有 ysy 大,并且你也很懒,所以你只能使用不超过 1MB 的内存把鸡排一个一个 检查过去,并且输出少的那种的编号。

给你多个数(<=5e6),采用交互库的方式读入,并且在读入完之前不知道有多少个数,空间只有1M也保存不了。这些数里面有一种数个数比其他数都少,并且其他数的出现次数保证相等且>=2,种数也>=2,求少的这种数。

考虑二进制,先记录头两个出现的数,如果出现次数不同,那么输出出现次数少的,否则知道了其他数的出现次数,设为b。

那么对于二进制的每一位记录编号包含这一位的数的个数。如果要求的数包含这一位显然个数不能整除b,否则能够整除。枚举位数统计即可。

传统题

ysy 是一位优秀的炉石传说玩家。在 2033 年一次更新中,炉石新出了一张 10 费卡,它的效果如下: 检验对方场上的随从的生命值,求出最长连续相同的一段的长度,并对英雄造成等于这个长度的伤害。

ysy 觉得这张卡十分垃圾。假设对面场上有 n 个随从,生命值为 [1, m] 的整数,那么他想知道这张 卡在所有情况下能打出的伤害之和。

他当然会算了,但是他想让你检验一下。由于答案可能会很大,对输入的质数 p 取模。

一句话题意:你需要求出所有长度为 n 的,每个元素为 [1, m] 的整数的 mn 个序列的最长连续相同 子段长度之和。

最长连续相同子段长度就是最长的所有数都相同的一段的长度,例如 {1, 2, 3, 4, 3, 2, 2, 4, 4, 4, 5} 最 长连续相同子段长度为 3。

考虑枚举答案,

[egin{aligned} ans&=sum_{i=1}^n i*G(i)\ &=sum_{i=1}^n G(ansgeq i)\ &=sum_{i=1}^n(m^n-G(ans<i)) end{aligned} ]

(F(i)=sum_{jleq i}G(i)),考虑计算(sum_{i=0}^{n-1} F(i)),枚举分成了j段并且容斥出现个几个>i的段。第一段有m种颜色可以选,其他段的颜色不能和上一段相同,那么

[egin{aligned} sum_{i=0}^{n-1} F(i)&=sum_{i=0}^{n-1}sum_{j=1}^n m*(m-1)^{j-1}sum_{k=0}^j(-1)^k{kchoose j}{n-ik-1choose j-1}\ &=msum_{i=0}^{n-1}sum_{j=1}^n (m-1)^{j-1}(-1)^ksum_{k=0}^j{kchoose j}{n-ik-1choose j-1}\ &=msum_{i=0}^{n-1}sum_{k=0}^n(-1)^ksum_{j=k}^n(m-1)^{j-1}{kchoose j}{n-ik-1choose j-1}\ &=msum_{i=0}^{n-1}sum_{k=0}^n(-1)^kfrac{1}{n-ik}sum_{j=k}^n(m-1)^{j-1}{kchoose j}{n-ikchoose j}j\ end{aligned} ]

考虑后面的

[sum_{j=k}^n(m-1)^{j-1}{kchoose j}{n-ikchoose j}j ]

这能快速算的话就可以枚举ik了。讨论组合意义,有(n-ik)个球,我们先从中选出 (j) 个,再从选出的 (j) 个中选出 (k) 个。在 (j) 个球中我们选出一个特殊的球,对于剩下的球用 (m-1) 种颜色染色。

考虑讨论这个特殊的球是不是这 (k) 个球中的,那么我们可以把它改成:有 (n-ik) 个球,我们从中选出 (k) 个。接下来分两种情况:

  1. (k) 个中选出一个特殊的球,把 (k) 个球中不特殊的用 (m-1) 种颜色染色。在剩下的((n-ik-k) 个)球中选出一个子集,用 (m-1) 种颜色染色。这种方案数是(k*(m-1)^{k-1}m^{n-ik-k})

  2. (k) 个球用 (m-1) 种颜色染色。在剩下的( (n-ik-k) 个)球中选出一个特殊的球,在其他剩下的( (n-ik-k-1) 个)球中选出一个子集用 (m-1) 种颜色染色。这种是((m-1)^k(n-ik-k)m^{n-ik-k-1})

最后再乘上(n-ikchoose k),那么枚举k和ik即可。

原文地址:https://www.cnblogs.com/lcyfrog/p/13070607.html