[USACO2021DEC] HILO

Solution

参考自 官方题解 里提到的一篇 Obliteration.pdf,但是里面作者写出了极多错误。。。然后式子还错错得对了。

令 \(y=n-x\)。

我们考虑枚举每一对数的贡献,不妨设为 \(j,i\ (j\in [x+1,n],i\in [1,x])\):

\[\pi =\underbrace{\cdots}_{X} \ j\ \underbrace{\cdots}_{Y} \ i \underbrace{\cdots}_{Z}
\]
  • 对于 \(k\in [1,i)\),它们若位于 \(X,Z\) 则没有限制,位于 \(Y\) 则得满足它不是 "LO";

  • 对于 \(k\in [i+1,x]\),它们只能位于 \(Z\);

  • 对于 \(k\in [x+1,j)\),它们只能位于 \(Z\);

  • 对于 \(k\in [j+1,n]\),它们没有任何限制。

我们枚举第一类位于 \(X,Y\) 的个数 \(m\),限制是位于 \(X\) 中的 \(\max\) 大于 \(Y\) 中的 \(\max\),显然两者是对称的,所以方案数为 \(\binom{i-1}{m} \cdot \frac{(m+1)!+[m=0]}{2}\)。

接下来推式子:

\[\begin{aligned}ans&=\sum_{i\le x}\sum_{j\le y} n^{\underline{y-j}} \sum_{m}\binom{i-1}{m} \cdot \frac{(m+1)!+[m=0]}{2}\cdot (n-(y-j+1)-m-1)!\\&=\sum_{j\le y} n^{\underline{j-1}}\sum_{i\le x}\sum_{m}\binom{i-1}{m}\cdot \frac{(m+1)!+[m=0]}{2}\cdot (n-j-m-1)!\\&=\sum_{j\le y} n^{\underline{j-1}}\sum_{m}\binom{x}{m+1}\cdot \frac{(m+1)!+[m=0]}{2}\cdot (n-j-m-1)!\\&=\sum_{j\le y}\frac{n^{\underline{j-1}}}{2}\left(x(n-j-1)!+\sum_{m\ge 1}\frac{x!}{(x-m)!}(n-j-m)!\right)\\&=\sum_{j\le y}\frac{n^{\underline{j-1}}}{2}\left(x(n-j-1)!+x!(y-j)!\sum_{m\ge 1}\binom{n-j-m}{y-j}\right)\\&=\sum_{j\le y}\frac{n^{\underline{j-1}}}{2}\left(x(n-j-1)!+x!(y-j)!\binom{n-j}{y-j+1}\right)\\&=\sum_{j\le y}\frac{n^{\underline{j-1}}}{2}\left(x(n-j-1)!+\frac{x(n-j)!}{y-j+1}\right)\\&=\frac{n!}{2}\sum_{j\le y}\left(\frac{x}{(n-j)(n-j+1)}+\frac{x}{(n-j+1)(y-j+1)}\right)\\&=\frac{n!}{2}\sum_{j\le y}\left(\frac{x}{n-j}-\frac{x}{n-j+1}+\frac{1}{y-j+1}-\frac{1}{n-j+1}\right)\\&=\frac{n!}{2}\left(1-\frac{x}{n}+H_y-(H_n-H_{n-y})\right)\\&=\frac{n!}{2}\left(H_x+H_y-H_n+\frac{y}{n}\right)\end{aligned}
\]

其中 \(H_n\) 是调和级数前缀和。

于是我们得到了可以对 \(x=0\sim n\) 均 \(\mathcal O(1)\) 求解的线性做法。

时间复杂度 \(\mathcal O(n)\)。

[USACO2021DEC] HILO 踩标做法的更多相关文章

  1. 【NFLSPC#4】嘉然今天吃什么(踩标做法)

    [NFLSPC#4]嘉然今天吃什么 感谢 @zhoukangyang 神仙的帮助. Solution 令 \(s_i\) 表示选了 \(i\) 个灯后仍然不合法的概率,那么 \(E(x)=\sum_{ ...

  2. 「ARC 139F」Many Xor Optimization Problems【线性做法,踩标】

    「ARC 139F」Many Xor Optimization Problems 对于一个长为 \(n\) 的序列 \(a\),我们记 \(f(a)\) 表示从 \(a\) 中选取若干数,可以得到的最 ...

  3. 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1878  Solved: 846[Submit][Status ...

  4. ZJOI2019一轮停课刷题记录

    Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...

  5. SCOI 2018 划水记

    (此处不应有目录,省选爆零的过程得慢慢看) Day -n 一诊 说真的,在没看到“第一次诊断性考试”之前,一直以为是“一整”,真是可怕,初中教育都开始像UW中的最高祭司学习了. 感觉题目很gg.于是考 ...

  6. LOJ3048 「十二省联考 2019」异或粽子

    题意 题目描述 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 $n$ 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 $1$ 到 $n$.第 $i$ 种馅儿具 ...

  7. NOIP练习赛题目4

    肥得更高 难度级别:C: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 自2009年以来,A.B站的历史就已经步入了农业变革的黎明期.在两站的 ...

  8. 【数学】【P5150】 生日礼物

    Description 给定 \(n\),求 \[\sum_{i}~\sum_j~[lcm(i,j)~=~n]\] input 一行一个整数代表 \(n\) Output 一行一个整数代表答案 Hin ...

  9. Wolfycz的娱乐赛题解

    现在不会放题解的!比赛完了我会把题解放上来的 祝大家玩的愉快~ 等会,cnblogs不会显示更新时间?我禁赛我自己 UPD:2018.12.15 欢迎大家爆踩标程- painting 我们考虑转化题意 ...

随机推荐

  1. 关于CSS的个人理解

    CSS的个人理解 一.概念 层叠样式表,主要由属性和属性值(value)组成.(虽然HTML.CSS对代码大小写不敏感,但是属性和属性值对代码大小写是敏感的) 二.工作方式 1.工作原理 由浏览器将C ...

  2. python-使用函数求余弦函数的近似值

    本题要求实现一个函数,用下列公式求cos(x)近似值,精确到最后一项的绝对值小于eps(绝对值小于eps的项不要加): cos(x)=0!x0​−2!x2​+4!x4​−6!x6​+... 函数接口定 ...

  3. 单例设计模式(Singleton)

    一.单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法) 例如:Hibernate的Se ...

  4. 数组 indexOf()

    众所周知,indexOf()这个方法经常出现在字符串的使用中,也许是用来寻找字符串中某一字符在字符串中的位置,或者也可以用来寻找字符串中重复出现的字符有哪些.对于刚接触 JS 的我们来说,在对数组的操 ...

  5. 技术管理进阶——什么Leader值得追随?

    原创不易,求分享.求一键三连 ​Leader眼里的主动性 前几天孙狗下面小A身上发生了一件Case,让他感到很疑惑: 有一个跨部门较多的项目推进不力,于是善于交流的他被临时提拔成项目负责人,但马上令人 ...

  6. 线程的概念及Thread模块的使用

    线程 一.什么是线程? 我们可以把进程理解成一个资源空间,真正被CPU执行的就是进程里的线程. 一个进程中最少会有一条线程,同一进程下的每个线程之间资源是共享的. 二.开设线程的两种方式 开设进程需要 ...

  7. 纯css 实现充电动画

    <template>   <div class="container">     <div class="header">& ...

  8. 今天写了一个可以测试并发数和运行次数的压力测试代码。(Java)

    今天写了一个可以测试并发数和运行次数的压力测试代码 介绍一下为什么会写这么一个工具. 介绍一个这个工具怎么用的. 背景 最近在开发CoapServer端,以及模拟设备侧发送数据调用开发好的CoapSe ...

  9. java 竞赛常用方法

    一,基本数据类型 1.int,float.double等转换为字符串用 String.valueOf方法 eg:double转换为String Double dtDouble=12.31354; St ...

  10. C语言基础部分练习(http://acm.hgnu.edu.cn)

    前言 最近有朋友和同学找我要c语言基础练习答案,为了方便分享,放在我的博客上了,如果对你确实有帮助,可以考虑点下赞或打赏哦(都能通过,没有专注于搞算法,所以有的地方可以优化,欢迎在评论区留言) A. ...