P7213 [JOISC2020] 最古の遺跡 3
这个题刚好是一个月前我们学校联赛组的人考的题的 T4 。今天有幸看见原题。
我当时顺便看了他们的题。想了一个小时,才想出来了如下的麻烦做法。
然后教练让我来讲这个题,我讲得很累,大家也都没有改。
题意:
有一个初始序列 \(a_1,a_2,…,a_{2n}\) ,其中 满足 \(1\le i\le n\) 的 \(i\) 一定出现恰好两次。
你会进行若干轮操作,每次从前往后依次考虑每个 \(i\),如果 \(a_i>0\) 且存在 \(i<j\) 满足 \(a_j=a_i\) ,那么就 \(a_i\) 就将减少 \(1\) 。
最后会有 \(n\) 个位置满足 \(a_i>0\) 。给定这 \(n\) 个位置,求有多少个初始的 \(a\) 满足条件。
做法:
令一个可重集 \(S\) 的“生成序列”\(s_i\) 满足 \(s_i=\sum_{x\in S} [x\le i]\) 。我们把那些最后 \(a_i>0\) 的位置涂成黑色。
令 \(M(S)\) 是满足 \(s_i=i\) 的最大的 \(i\) 。
考虑从后往前填初始的 \(a_i\)。如果一个位置是黑色的,那填入的权值 \(x\) 需要满足 \(x>M(S)\) ,然后把 \(x\) 加进 \(S\) ,否则,需要满足 \(x\le M(S)\) 。(这里的正确性读者自行思考。
我们要关注 \(M(S)\) 的变化,因为 \(x\) 的范围也随之变化。
令 \(dp_{i,j}\) 表示,从第 \(2n\) 个格子到第 \(i\) 个格子,当前 \(M(S)=j\) 。
1.加入黑色格子
在加入一个黑色位置时,我们不急着往里面填数。我们只会填那些满足 \(x_i\le M(S)\) 的数。
在 \(M(S)\) 发生变化,从 \(m\) 变成 \(m'\) 时,在空格子里选 \(m-m'\) 个,强令他们满足 \(m<x\le m'\) 。并且要选最后一个。设当前考虑到了第 \(i\) 个黑格子,则选择位置的方案数是 \(\tbinom{i-m-1}{m'-m-1}\) 。
现在我们填这 \(L=m'-m\) 个空格。令 \(g_i\) 是从前往后这些空格填的数, \(b_i=g_i-m\) ,则 \(1\le b_i\le L\) 。(填 g 的方案数只与 \(L\) 相关。我们设这里的方案是 \(F_L\) 。)
如果把 \(b_1\) 到 \(b_{L-1}\) 加入一个集合 \(T\) ,则 \(M(T)=0\) 。也就是说,\(T\) 的生成序列 \(s\) 满足,对于 \(i\geq 1\) ,都有 \(s_i<i\) 。
现在考虑从 \(1\) 到 \(L\) 把权值填入 \(b\) 中。在状态中记录前 \(L-1\) 个里已经填了 \(j\) 个,并且最后一个是否被填。即 \(f_{i,j,0/1}\) 。转移读者自行思考。
显然 \(F_L=f_{L,L-1,1}\) 。
有 \(dp_{i+1,m}\tbinom{z-m-1}{m'-m-1}F_{m'-m-1}->dp_{i,m'}\) ,其中 \(z\) 是 \(i\) 到 \(2n\) 中黑格子的个数。
当然,\(M(S)\) 没有改变的话,因为暂时不填,有 \(dp_{i+1,m}->dp_{i,m}\) 。
2.加入白色格子
在加入这个格子之前,有恰好 \(m\) 个黑格子满足权值 \(\le m\) ,并且白格子都满足 \(\le m\)。
令前面有 \(p\) 个白格子,则只剩下 \(m-p\) 种可能。但有一些权值会出现两次,这就算重了。
3.处理重复的问题,填黑色格子对后面白色格子的影响
\(M(S)\) 从 \(m\) 到 \(m'\) ,相当于权值在 \((m,m']\) 的数,有一半填入黑色格子,有一半留着给白色格子。
如果有一个权值,在黑格子中没出现,在白格子中出现两次,则它会使答案除以 \(2\) 。
所以我们重定义 \(F_i\) ,令 \(1\le i\le L\) 中没出现过的权值个数有 \(c\) 个,则 \(F_L\) 表示所有方案的 \(2^{-c}\) 的和。
这样就解决了白格子的重复问题。
复杂度是 \(O(n^3)\) 。
P7213 [JOISC2020] 最古の遺跡 3的更多相关文章
- FC红白机游戏列表(维基百科)
1055个fc游戏列表 日文名 中文译名 英文版名 发行日期 发行商 ドンキーコング 大金刚 Donkey Kong 1983年7月15日 任天堂 ドンキーコングJR. 大金刚Jr. Donkey K ...
- N1考试必备词汇
相次ぐ あいつぐ 淡い あわい 合間 あいま 渋い しぶい 相俟つ あいまつ 慌てよう あわてよう 明るい あかるい 安易過ぎる 明らか あきらか 用心 ようじん 悪事 あくじ 案の定 あんのじょう ...
- MIS2000 Lab,我的IT人生与职场--从零开始的前十五年 与 我的微创业
http://www.dotblogs.com.tw/mis2000lab/archive/2014/09/16/ithome_2014_ironman.aspx [IT邦幫忙]鐵人賽 -- MIS2 ...
- [zw]薰衣草/紫花苜蓿+桑椹/(黑红蓝)霉等植物
有趣的问题 为什么越长大觉得时间过得越快? 另参考,讨论的比较深刻 为何人随着年龄的增大觉得时间过得越来越快? 小时候,你会花上十分钟去观察一只蚂蚁的活动. 小时候,走路上碰到一只鸟儿你都会新奇不已. ...
- 【分享】GEARS of DRAGOON 1+2【日文硬盘版】[带全CG存档&攻略+SSG改动+打开存档补丁]
冒险者们哟.寻找龙秘玉吧--! ninetail的最新作,是使用丰富多彩的技能·道具探索迷宫的3D迷宫RPG! 存在着骑士和神官的架空世界常见的职业为首的13种职业.超过数百种的道具的登场! 和伙伴一 ...
- LINUX命令总结 -------来自 水滴娃娃 的CSDN
LINUX命令总结 标签: LINUX命令总结 2014-01-27 15:54 41039人阅读 评论(1) 收藏 举报 分类: linux(1) 版权声明:本文为博主原创文章,未经博主允许不得 ...
- [筆記] Ubuntu Linux 使用 apt-get 指令移除軟體並清理遺留的垃圾
This is come from http://blog.lyhdev.com/2013/01/ubuntu-linux-apt-get.html 在 Ubuntu 下移除某個軟體套件,使用的 ...
- 第6次结对作业--郑锦伟&古维城
第6次结对作业 在线英语学习平台客户端原型 1.结对成员 郑锦伟 2015034643034 古维城 2015034643033 2.原型设计工具实现-Photoshop 3.需求分析 使用NABCD ...
- 开发微信小程序——古龙小说阅读器
概述 由于面试的关系接触了一下微信小程序,花了2晚上开发了一个带书签功能的古龙小说阅读器,并且已经提交审核等待发布.这篇博文记录了我的开发过程和对微信小程序的看法,供以后开发时参考,相信对其他人也有用 ...
- 品味ZooKeeper之纵古观今_1
品味ZooKeeper之纵古观今 本章思维导图 这一系列主要是从整体到细节来品味Zookeeper,先从宏观来展开,介绍zookeeper诞生的原因,接着介绍整体设计框架,接着是逐个细节击破. 本章是 ...
随机推荐
- ORM执行sql语句 双下划线 外键字段创建 ORM跨表查询
目录 模型层之ORM执行SQL语句 方式1一 方式二 方式三 神奇的双下划线查询 ORM外键字段的创建 1.创建基础表 2.确定外键关系 3.表的查看 数据的录入 外键字段相关操作 针对一对多 ''' ...
- 12、HSSFWorkbook实现多张sheet导出
转载自 一.封装一个通用的装载数据的实体类: import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsCon ...
- 微软拼音长句模式恢复工具支持Win10 1803
4月份就有人留言旧微软拼音恢复工具不支持Win10 1803了,我自己也遇到了,但因为没时间搞,勉为其难使用了词组模式的微软拼音几个月,终于在八月份抽个空研究了下,解决了. 这次是因为傻逼大微软改了 ...
- Python 跨模块使用全局变量(自定义类型)
gol.py def _init():#初始化 global _global_dict _global_dict = {} def set_value(key,value): "" ...
- Java基础学习笔记-关键字、标识符、分隔符
标识符(identifier),我的理解呢,简单来说就是一个常量或者变量的名字啦 命名规则: 只能以 字母..$ 这三种开头,后面的话就可以由字母..$和数字组成 不能用Java中的关键字 不能包含空 ...
- 电脑本地安装不同版本MySQL
本地已经安装了mysql5.7版本,想测试mysql8版本的用法,想在一台电脑同时配置不同版本的mysql在不同端口号,看起来简单,实现起来其实挺多坑的,总结下实战经验和大家分享下 一.下载安装 下载 ...
- Vue插槽最全最通俗的总结
1.匿名插槽----就是定义的时候不带name的插槽,使用的时候也不用带name 总结: (1)一定要分清定义插槽和使用插槽格式.如上图A是在使用一个插槽的基础上再继续定义一个匿名插槽. (2)匿名插 ...
- Markdown快速入门——我不学 甚至没这篇文章
Markdown快速入门---我不学甚至没这篇文章 写在前 俗话说:"工欲善其事,必先利其器".那么码字前,自然是要找到合适的工具.我这里就选用了VSCode+Markdown.( ...
- 我们从 CircleCI 安全事件获得的3个经验教训
CircleCI 作为业内最受欢迎的 CI/CD 平台提供商之一,有超过20万个 DevOps 团队使用其平台.该公司在今年1月在其官网报告了一起安全事件引起客户恐慌.在此事件中,有身份不明的恶意攻击 ...
- Google Guice 用户指南 - Ⅰ:概览
译者:kefate 原文:https://github.com/google/guice/wiki/Overview 大家好,我是kefate.今天开始我将会把Google Guice的官方文档陆续翻 ...