A Solution
by Anemones
题意要求对于所有相同的 都要使得它下面的
全部相同,我们发现若一些相同的
对应的
有不同,则只能保留一个
,我们肯定要保留那个出现最多的
,而剩下的
对应的
显然需要改变,由于可以改成
的任意数,我们给它单独变成一个独立的种类(也就是从未出现过的数)就行。
B Solution
by Safari_Mo
去掉相同的行。
如果一行的 把另外一行全部包含,则删除这一行。
找出剩下的行的 的个数的最大值即可。
正确性证明:
令 。
设第 行把第
行完全包含,如果
则
。
这时不可能翻转一位使得 ,
。
此时根据 的结论(答案为
的个数)不难得出答案的上界,也可以取到上界, 复杂度
或
.
C Solution
by I_like_magic
题面大致意思:序列 是单调不降的,并且要求对任意的
,进行至少两次
操作后得到
,满足
。
很显然,如果 ,那么,当
时,得到的新的
一定不等于原先的
,而当
变小或变大时,由于
的单调性,
操作只会让
更加远离原先的
(或不变),永远不会等于原先的
。
但是,如果 ,那么无论经过多少次
,新的
都会等于原先的
。
所以,我们只需要统计 满足单调性,同时
的序列个数就行了。
我们考虑到,如果 ,那么
,由于单调性,
到
的
值都会等于
。
所以,满足条件的序列 ,一定可以被划分为若干个区间,且每个区间
的
相等,且
。
然后就可以开始递推了。
我们先不考虑题目给的几条限制。
记 表示序列长度为
的答案数。
先假定 。
接下来是计算每个 。
对于一个长度为 的序列,我们可以假设最末端的
个
都被划分到了一个区间,而这个区间的
有
种取值,所以这种情况答案数为
。
所以得到 。
记 ,那么
。
显然是可以每一步 处理好
,从而实现
的总复杂度的。
现在我们加入了若干条限制。
我们可以发现,限制相当于是告诉我们,对于任意的 ,将
直接确定为
。
读入限制时,判断一下有没有冲突,有冲突直接输出 。
然后,修改一下递推。
先正常递推,然后遇到了已经被确定的区间 ,直接跳到区间结尾
,考虑
如何计算。这个确定的区间可以和前面没确定的连上,并且连上的部分的值已经确定,所以方案数就是连上若干个,加上剩下部分的方案数,即为
,注意如果前面存在已经被确定的区间
,那么方案数应是
。
考虑计算完 ,后面怎么推,显然,
的贡献有两种情况,第一种,从
到
一整个区间都连上了,答案显然是
,另一种情况是
,这个贡献就是
,与前面无限制的情况同理,处理方法相同。
所以,这一部分的 。
D Solution
by cjh20090318
令 。
通常地,我们将概率转化为合法方案数除以总方案数。
每个字符只有选或不选两种情况,所以总方案数即为 。
对于每一个特定字符 ,对其构造一个
矩阵(矩阵从
开始,字符串从
开始):
答案即为:
首先对于最后求总方案数的快速幂,可以利用费马小定理优化,令 。
时间复杂度的瓶颈在于矩阵乘法,考虑改如何优化其效率。
因为矩阵构造的特殊性,可以发现对于所有的 都必定为
,对于矩阵对角线上的元素恒为
,只有一半的矩阵需要进行矩阵乘法。
根据矩阵乘法的定义,,由上述性质,只需要对非零的位置做矩阵乘法,即
,特化的矩阵乘法式子即
。
理性分析其矩阵乘法次数,,这里略去不作证明。
时间复杂度 ,其中
为矩阵乘法优化的常数,约等于
。
在 较小时可以近似认为是
。
E Solution
by Anemones
首先根据期望的线性性展开原式:
由于 ,可以证明恒有
。且序列
具有独立性,当考察
与
时,两者分别由互不相交的随机变量集合
与
决定。因此
与
相互独立,满足
。
于是我们只需要分别计算出所有前缀最大值的一阶矩 和二阶矩
,后缀部分同理可得。
在离散概率空间内,对于取值范围在 的随机变量
,其矩的计算可转化为累积分布函数(CDF)的求和:
令 。由于
在
内均匀分布,其单变量 CDF 为:
显然, 在由所有
和
构成的
个离散区间内是关于
的一次式。因此,
在每个离散区间内是一个最高
次的多项式。
我们考虑离散化数轴,对每个区间维护多项式系数。每引入一个新的 ,若区间在
内,多项式执行一次
的乘法更新:
区间内的矩贡献则利用伯努利数预处理的自然数幂和公式 进行
求解。
最后,通过前缀和后缀的矩合并答案:
不难证明这个式子和原式等价。
F Solution
by Wa1ChA
设 为排列
中的四个下标(不重),满足
。我们对他们的值
的大小关系进行讨论。
-
。
显然有
,读者自证不难。
-
(
同理)。
不等式左侧为
,右侧为
。
右式减左式得:
或
中一个数的两倍,减去
或
中一个数的两倍。由
易得差值
,故左式恒小于右式。
-
(
同理)。
不等式左侧为
,右侧为
。
因为有 ,所以左式恒大于右式。
综上,三种情况成立条件无交。
本题定义存在情况 或
为合法排列。考虑容斥,答案即为:排列总数 - 无情况
的排列数 - 无情况
的排列数 + 只有情况
的排列数。
排列总数
。时间复杂度
,快速阶乘可以做到
。
无情况
的排列数
约定 表示当
时的一个合法四元组。
结论:无情况 的排列中,
所在的下标集合为
。
考虑反证法。若 的下标不在上述集合中,不失一般性地,我们讨论
的下标(约定
):
-
若
的下标为
或
:存在
满足情况
。
-
否则,一定存在
满足情况
。
分类讨论 的下标:
-
下标为
:规模为
。
-
下标为
:容易证明
的下标一定为
。此时可以把
两个数看作一个数,原问题规模减小为
。
-
下标为
:容易证明
的下标一定为
,
的下标一定为
。此时可以把
三个数看作一个数,原问题规模减小为
。
容易发现, 三个数字的关系也是满足上述结论和分讨的。
考虑如何刻画这个序列。
我们从小到大向排列里面加入数字。令已经被填入数字的位置状态为 ,未被填入数字的位置状态为
。则根据上述三种讨论,把上述三种初始状态单独拉出,产生初始形如
的序列
。
在加入任意个数字后,这个序列无情况 当且仅当:
假设当前 被填为
。那么我们接下来仅可以把
或
填为
。
-
若把
填为
,则无影响。
-
若把
填为
,再下一次必须要先把
填为
。否则在
填为
时,违反上述条件。
-
显然不能将
填为
。
这个非常好 dp。令 表示
的合法排列总数,有
。
读者仔细思考会发现,这个 dp 在序列末尾存在边界问题。但笔者提及过 三个数字的关系满足由
推导的结论和分讨。这三个数显然是最后放入的,把序列视作缺失末尾部分,直接 dp 就是对的。
暴力求出 在
较小时的边界,答案即为
。
时间复杂度 ,使用矩阵快速幂优化可以达到
。其中
为矩阵大小,本题中
。
无情况
的排列数
类似上文,我们刻画这样的序列。
我们从小到大向排列里面加入数字。令已经被填入数字的位置状态为 ,未被填入数字的位置状态为
。
在加入任意个数字后,这个序列无情况 当且仅当:
当序列全为 时,我们可以任选一个位置放入。
-
若选择位置下标为
或
,则每次只能在
串开头和末尾把一个
变为
。
-
否则,每次只能把与
串相邻的
变为
。当有一侧的
被清空后,转化为了上一种情况。
容易发现,第一次选择的方案数为 ,接下来
次,每次方案数为
,最后一次方案数为
。
故答案为 。
时间复杂度 ,快速幂可以做到
。
只有情况
的排列数
约定 表示当
时的一个合法四元组。
考虑 两个数字,他们显然应该相邻。
考虑反证法。若 不相邻(约定
):
-
若
不在端点上,则一定有
符合情况
。
-
若
不在端点上,则一定有
符合情况
。
-
若
都在端点上,则一定有
符合情况
。
同理可证,,
的位置与
相邻。
手玩发现边界上可以有例外,具体的, 可以与
中任意一个数相邻,
同理。
所以这种情况()共有
种方案。
正解的多测次数很多(不过这样 的快速阶乘算法就无法通过了),需要类似离线处理的手法才能通过。
综上,总复杂度 。

京公网安备 11010502036488号