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诞生的原因,接着介绍整体设计框架,接着是逐个细节击破. 本章是 ...
随机推荐
- TCP协议三握四挥、socket模块
目录 传输层之TCP与UDP协议 应用层 socket模块 socket代码简介 代码优化 半连接池的概念 传输层之TCP与UDP协议 用于应用程序之间的通信 TCP与UDP都是用来规定通信方式的 ...
- 三步快速搭建Typora图床(SM.MS+PicGo)
三步快速搭建Typora图床(基于SM.MS+PicGo) 前言 在有些同学使用Typora的过程中,会发现Typora不像Word一样,在文档脱离本机后依然正常显示图片,自己的tyopora文件在发 ...
- Jmeter 之 jp@gc - Stepping Thread Group
jp@gc - Stepping Thread Group 自定义线程组,根据业务需要进行设计用户增加间隔时间等 1. 下载jmeter-plugins-manager-1.3.jar插件放入lib ...
- Zookeeper详解(02) - zookeeper安装部署-单机模式-集群模式
Zookeeper详解(02) - zookeeper安装部署-单机模式-集群模式 安装包下载 官网首页:https://zookeeper.apache.org/ 历史版本下载地址:http://a ...
- 区块链特辑——solidity语言基础(三)
Solidity语法基础学习 五.映射类型: 映射型态 Mapping Type 映射钥匙Key → 真实资料 Value mapping(KeyType → ValueType) VariableN ...
- (7)go-micro微服务zap日志配置
目录 一 Zap日志介绍 二 Zap日志安装 三 Zap日志初始化 四 Zap日志重写方法 五 Zap日志使用 六 最后 一 Zap日志介绍 Zap是在 Go 中实现超快.结构化.分级的日志记录. Z ...
- 关于Token和Cookie做权限校验的区别及Token自动续期方案
title: 关于Token和Cookie做权限校验的区别及Token自动续期方案 categories: 后端 tags: - .NET Token和Cookie的区别 首先,要知道一些基本概念:h ...
- sikulix___自动化办公___重复性_机械性_的电脑操作___python脚本___Java运行环境下德jar包完成自动化测试相关___截图编程控制键盘鼠标
sikulix___自动化办公___重复性_机械性_的电脑操作___python脚本___Java运行环境下德jar包完成自动化测试相关___截图编程控制键盘鼠标 应用场景: 公司内的大佬更改了xml ...
- 基于.NetCore开发博客项目 StarBlog - (26) 集成Swagger接口文档
前言 这是StarBlog系列在2023年的第一篇更新~ 在之前的文章里,我们已经完成了部分接口的开发,接下来需要使用 curl.Postman 这类工具对这些接口进行测试,但接口一多,每次测试都要一 ...
- 面试必问:说一下 Java 虚拟机的内存布局?
我们通常所说的 Java 虚拟机(JVM)的内存布局,一般是指 Java 虚拟机的运行时数据区(Runtime Data Area),也就是当字节码被类加载器加载之后的执行区域划分.当然它通常是 JV ...