CF1349F 【Slime and Sequences】part1
由于本文过长,\(\LaTeX\) 炸了,分两篇,part2
题目描述
定义一个正整数序列为好序列,当且仅当如果某个数 \(k\) 出现过,那么一定有 \(k-1\) 在最后一个 \(k\) 的前面出现过。
对于所有 \(i\in[1,n]\),求出 \(i\) 在所有好序列中出现次数的和
Easy Version:\(n\leq 5000\)
Hard Version:\(n\leq 10^5\)
题解
领略到了国际计数顶尖水平。。
问题转化
有重复元素的正整数序列不好统计,我们试图将它映射到排列上
我们构建一个排列 \(p\),在相邻两个数字之间填入不等号,设 \(p_{1\dots i}\) 中共有 \(num_i\) 个小于号,我们将它映射到 \(a\) 序列:\(a_{p_i}=num_i+1\),则 \(a\) 是一个好序列
证明如下:设 \(i\) 为一个小于号右边的位置,则 \(num_{i-1}+1=num_i\),即 \(a_{p_{i-1}}+1=a_{p_i}\),而由于是小于号,所以 \(p_{i-1}<p_i\),容易发现这正是题目中要求的限制
而对于一个好序列,我们从小到大枚举数值,对于每一个数值,我们将它所在的所有下标从大到小放到数列的后面(初始数列为空),这样我们就完成了从好序列到排列的映射
则容易发现,这是一个双射关系
排列组合推导
这里引入欧拉数:\(\left<\begin{matrix}n\\k\end{matrix}\right>\) 表示长度为 \(n\) 的排列中,相邻数字之间的小于号数目为 \(k\) 的方案数
设 \(ans_k\) 为数字 \(k+1\) 的答案
则 \(ans_k=\sum\limits_{i=\max(k,1)}^n\left<\begin{matrix}i\\k\end{matrix}\right>\dbinom ni(n-i)!\)
什么意思呢?我们枚举产生好序列中 \(k+1\) 这个数字的位置,则前 \(i\) 个数中需要有 \(k\) 个小于号,我们再给前 \(i\) 个数分配标号,剩下的 \(n-i\) 个数随意排列
可是这个算的是排列方案数,而且还算重了
我们考虑证明算重的次数就等于该方案中 \(k+1\) 的出现次数:对于一个排列,它被计算当且仅当 \(i\) 在第 \(k\) 个小于号和第 \(k+1\) 个小于号之间,而这恰好就是 \(k+1\) 的出现次数
\(O(n^2)\) 递推欧拉数即可通过 Easy Version
补一个欧拉数的递推公式:
考虑在长度为 \(n-1\) 的排列中插入一个 \(n\) 得到长度为 \(n\) 的排列
- 在排列的左端插入一个 \(n\),这样不会增加小于号的数量,所以这种情况从 \(\left<\begin{matrix}n-1\\k\end{matrix}\right>\) 转移来
- 在排列的右端插入一个 nn,这样会增加一个小于号,所以这种情况由 \(\left<\begin{matrix}n-1\\k-1\end{matrix}\right>\) 转移来
- 在某一个位置 \(i\) 和 \(i+1\) 中间插入 \(n\),其中 \(P_i<P_{i+1}\),这里会增加一个小于号,同时会破坏原来的一个小于号,所以总的小于号数量是不变的。所以它由 \(\left<\begin{matrix}n-1\\k\end{matrix}\right>\) 转移来,情况数即原排列中小于号的数量为 \(k\) 种
- 在某一个位置 \(i\) 和 \(i+1\) 中间插入 \(n\),其中 $P_i>P_{i+1}$,那么这里会增加一个小于号,从 \(\left<\begin{matrix}n-1\\k-1\end{matrix}\right>\),情况数即大于号的数量即 \((n-2)-(k-1)\),其中 \(n-2\) 表示长度为 \(n-1\) 的排列共有 \(n-2\) 个间隙
所以综上所述,\(\left<\begin{matrix}n\\k\end{matrix}\right>=(k+1)\left<\begin{matrix}n-1\\k\end{matrix}\right>+(n-k)\left<\begin{matrix}n-1\\k-1\end{matrix}\right>\)
下接 part2
CF1349F 【Slime and Sequences】part1的更多相关文章
- CF1349F 【Slime and Sequences】part2
由于本文过长,\(\LaTeX\) 炸了,分两篇,part1 优化 我们假装不会欧拉数的通项式(其实是因为它的通项式不容易继续优化?),使用容斥代替掉欧拉数 设 \(\begin{vmatrix}n\ ...
- 【K8S学习笔记】Part1:使用端口转发访问集群内的应用
本文介绍如何使用kubectl port-forward命令连接K8S集群中运行的Redis服务.这种连接方式有助于数据库的调试工作. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同 ...
- Part1.2 、RabbitMQ -- Publish/Subscribe 【发布和订阅】
python 目录 (一).交换 (Exchanges) -- 1.1 武sir 经典 Exchanges 案例展示. (二).临时队列( Temporary queues ) (三).绑定(Bind ...
- 【字符串算法3】浅谈KMP算法
[字符串算法1] 字符串Hash(优雅的暴力) [字符串算法2]Manacher算法 [字符串算法3]KMP算法 这里将讲述 [字符串算法3]KMP算法 Part1 理解KMP的精髓和思想 其实KM ...
- 【leetcode 字符串处理】Compare Version Numbers
[leetcode 字符串处理]Compare Version Numbers @author:wepon @blog:http://blog.csdn.net/u012162613 1.题目 Com ...
- 【九度OJ】题目1442:A sequence of numbers 解题报告
[九度OJ]题目1442:A sequence of numbers 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1442 ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- 【夯实PHP基础】PHP数组,字符串,对象等基础面面观
本文地址 分享提纲 1.数组篇 2.字符创篇 3.函数篇 4.面向对象篇 5.其他篇 /*************************** 一.数组篇 Begin***************** ...
- 【Java学习系列】第3课--Java 高级教程
本文地址 可以拜读: 从零开始学 Java 分享提纲: 1. Java数据结构 2. Java 集合框架 3. Java泛型 4. Java序列化 5. Java网络编程 6. Java发送Email ...
随机推荐
- 数据可视化之DAX篇(二十五)PowerBI常用的度量值:累计至今
https://zhuanlan.zhihu.com/p/64999937 经常碰到本年至今.本月至今的数据计算,其实还有一类计算是,从历史最早日期至今的累计计算,比如从开业到现在总共卖出了多少件商品 ...
- 【RPA Starter第三课】第一个Uipath项目:HelloWord
最后是一个小项目,开启使用Uipath.Uipath云平台,Uipath Orchestrator,Uipath Studio,发布项目.怎么启动机器人.都有详细的步骤. Uipath 的账号是通用的 ...
- 没内鬼,来点干货!SQL优化和诊断
SQL优化与诊断 Explain诊断 Explain各参数的含义如下: 列名 说明 id 执行编号,标识select所属的行.如果在语句中没有子查询或关联查询,只有唯一的select,每行都将显示1. ...
- sql与SQL CODE和SQL State相关报错
操作数据库过程中,遇到许多问题,很多都与SQL CODE和SQL State相关,现在把一个完整的SQLCODE和SQLState错误信息和相关解释作以下说明,一来可以自己参考,对DB2错误自行找出原 ...
- OSCP Learning Notes - Privilege Escalation
Privilege Escalation Download the Basic-pentesting vitualmation from the following website: https:// ...
- p71_文件传送协议FTP
一.FTP服务器和用户端 FTP是基于客户/服务器(C/S) 的协议. 用户通过一一个客户机程序连接至在远程计算机上运行的服务器程序. 依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器. ...
- Monster Audio 使用教程 (八) Vst3 使用侧链功能
Monster Audio对 Vst3 插件支持侧链功能,例如,我们插入一个Waves C1 comp Stereo 效果器 然后在侧链处,就可以选择任意一个音轨的信号,作为侧链信号源. 注意,只有v ...
- iframe和DataForm
一.iframe使用 iframe在一个页面中,相当于整个window窗口的子窗口,可通过页面的元素结构查看. <div> <p>学习iframe</p> < ...
- Btree索引和Hash索引
B-Tree 索引 BTree索引是最常用的mysql数据库索引算法,因为它不仅可以被用在=,>,>=,<,<=和between这些比较操作符上,而且还可以用于like操作符, ...
- LQB2013A01高斯日记
诶,今天发生了点不是很开心的事.说实话挺影响心情的啊(谁遇见这种事不生气呢啊啊啊啊) 但是不能水更,还是得好好更新呀. 这个题居然直接用excel哈哈哈哈 那,,就这样吧!