aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
每个数能取的范围是一段区间 ,其中 单调不增, 单调不增。
画个图 ():

圆环和矩形的交即为合法点。
容易看出 到 都是 0。
本质上是元素有上下界的排列计数,考虑不管下界只看上界然后容斥。
假设每个元素只有上界 ,那么将 排序(记为 ),方案数就是 。比较好理解,每个位置能选的数的个数就是原本能选的个数减去前面已选的个数(由于有序,已选的个数就是 ,可以发现减去的数就是排名-1)。
接下来容斥,记 为 中恰好有 个的上界取 ,其余上界取 的总方案数。易得 。
考虑求 。
由于每个未知的贡献与其排名有关,不妨将序列大致排序后与过程中进行微调。
将 部分以 为关键字, 以 为关键字排序,从前往后进行 。设 为考虑了(排序后的)前 个位置,已经有 个 内的位置的上界取了 。
分类讨论:
这个点原本有 种选法。 之前所有 中且上界取了 的位置都会使 排名 +1;还有 之前所有 的位置,由于排序,这些位置也会使 排名 +1。
发现第二类位置的个数(记为 )对于每个 是确定的,可以在 过程中顺便记录。
于是这个位置的选法就是 。
于是 。
又有两种情况:
上界取 :
选法是 。原因类似上面。
于是 。
上界取 :
复杂的情况。
原本有 种选法。
由图可得 所有的 都得排在 前面,于是排名增加 。
最终 内且上界取了 的所有位置都排在 前面,但是我们不知道有多少个。那么我们就设最后有 个,那么排名增加 。
又由图可知, 之前 内且上界取了 的所有位置也得排在 前。与 类似,记录 为 之前在 之间的个数,那么这部分排名增加 。
于是 。
但是由于 不知道,我们可以枚举 是多少,对每个 进行一次 。最后有 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通