当前位置: 首页 > news >正文

HDU 4689 Derangement

传送门

题意:给定一个长度为 \(n\),包含 +- 的字符串 \(s\)。求长度等于 \(n\) 的排列 \(p\) 的数量,满足对于所有 \(1 \le i \le n\),若 \(s_i=\)+,则 \(p_i > i\)
数据范围不明确。经测试,要求单组时间复杂度在 \(O(n^2)\) 左右。

这里对排列中填数的限制,既有“前缀”又有“后缀”限制。不是特别好 DP。

这里一种较为清晰的思考方式是,我如果依次将 \(1,2,\dots,n\) 填入序列,有多少种方案。
然后结合前缀的 DP 状态设计,设 \(f_i\) 表示考虑前缀 \(i\) 个字符的限制,枚举到 \(i\) 就要决定 \(i\) 该填到哪里去。然后发现无法确定 \(i\) 填到当前下标的前面还是后面,也无法确定 \(p_i\) 该填什么数。

考虑对于一个值 \(i\),如果它填到的位置 \(j>i\),那么我们在 DP 到 \(i\) 的时候先不填 \(i\),等到 DP 到 \(j\) 的时候再考虑 \(i\) 的填入。
于是可以设,\(f_{i,j}\) 表示考虑前缀 \(i\),同时 \(s_1\sim s_i\)\(j\)加号是在当时没有填入数字,要延迟填入。

注意这里只有加号可以进行延迟考虑的操作,如果 \(s_i\) 为加号,那么在 DP 的过程中,一定要决定 \(p_i\) 填什么。

分类考虑:

  • \(s_i\) 是减号:
    我们考虑 \(i\) 何去何从。一种方案是,前面不是空了 \(j\) 个数延迟填入吗,他们一定都是小于 \(i\)。那么我们可以从这 \(j\) 个数中选一个填入 \(p_i\),而 \(i\) 这个数丢到后面再填。则 \(f_{i,j} \gets f_{i-1,j} \times j\)
    另一种方案是,\(i\) 可以填入所有的前面丢下的空位中的任意一个,所以让 \(i\) 选一个填入就行。但是由于状态的定义,我们对于第 \(i\) 个位置一定要从前面延迟填入的数中,拿过来一个填进 \(p_i\)。这样填,空位会减少一个。前 \(i-1\) 的前缀中,有 \(j+1\) 个空位。故 \(f_{i,j} \gets f_{i-1,j+1} \times (j+1)^2\)

  • \(s_i\) 是加号:
    \(i\) 往前填,空位数不变。\(i\) 延迟填入,空位数相比于 \(i-1\) 会增加 \(1\)。故 \(f_{i,j}=f_{i-1, j}\times j + f_{i-1, j-1}\)

时间复杂度 \(O(n^2)\),注意多测清空。代码非常好写,略。

http://www.sczhlp.com/news/69410/

相关文章:

  • 洛谷 P4099 [HEOI2013] SAO
  • 第一次作业-自我介绍
  • 宁海有做网站的吗动漫制作技术专业就业方向
  • 斐讯k3做网站望野八年级上册
  • 做外贸现在一般都通过哪些网站职业技能培训网
  • 做视频网站用什么服务器配置有关于网站开发的参考文献
  • 银川网站设计建设合肥网络推广平台
  • 互联网网站解决方案代码下载网站
  • 做搬家广告哪家网站有优怎样在阿里巴巴上做网站
  • 可以做puzzle的网站企业网站模板下载需谨慎
  • 土巴兔网站开发技术公司做网站需要注意些什么
  • 招财猫网站怎么做合肥在线设计
  • 畜牧企业网站模板官网怎么进入
  • 中山视角做网站的公司商业网站建设视频教程
  • 制作一个简单的带有3D打印部件的四足蜘蛛机器人
  • 通过使用Basys 3开发来回顾FPGA设计的基础知识以及与简单执行器的接口
  • 如何使用CrowPanel ESP32-S3高级HMI显示器来创建一个语音交互聊天机器人
  • 设计一个独特的DIY板
  • 设计UIUC SE 423机电一体化的机器人
  • 通信建设资质管理信息系统网站网站服务设计
  • 最便宜的外贸自建站平台免费网站软件下载
  • 公司门户网站该怎么做广州seo优化公司排名
  • 二级网站内容建设要求吗郑州网站建设企业
  • 什么不属于网站推广软件wordpress考试系统插件
  • 对网站主要功能界面进行赏析线上营销渠道有哪些
  • 网站出现转站怎么办外贸推广信
  • 开关电源多路输出电源的电路结构设计
  • 基于AI改造神奇GPT8球
  • 完整学习路径之开关电源的定义
  • 使用BL0937 IC进行交流电源监控