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

qoj10093 Jump the Frog

题意

给出 \(n\) 个由 O~ 组成的字符串 \(s_i\),还有 \(m\) 个额外字符串,第 \(n+i\) 个字符串 \(s_{n+i}\) 由第 \(s_x\)\(s_y\) \((x,y<n+i)\) 个字符串拼接得到,即 \(s_{n+i}=s_x+s_y\)。你需要对这 \(n+m\) 个字符串解决以下问题:

有一只青蛙从字符串的起点出发,它只能站在 O 上,且每次可以向前跳 \(1\sim k\) 格,问跳到末尾有多少种不同的方案。

\(1\le n,m\le 10^5,1\le k\le 20,\sum|s_i|\le 10^5\)

思路

我们先对前 \(n\)\(s_i\) 进行朴素 dp。设 \(f_{i}\) 为青蛙跳到第 \(i\) 格的方案数,显然有:

\[f_{i}=\begin{cases} 0 & s_i\neq 'O' \\ \sum_{j=\max(0,i-k)}^{i-1} f_{j} & s_i='O' \end{cases} \]

答案即为 \(f_{end}\)

我们解决了前 \(n\) 个字符串的答案,考虑后 \(m\) 个字符串的答案。

假如把两段字符串拼接到一起,可以发现从一个字符串跳到另一个字符串只有可能从前一个字符串的最后 \(k\) 个位置跳到后一个字符串的前 \(k\) 个位置,所以我们对每个字符串不用存储太多的信息。

于是记 \(f_{i,s,t}\) 表示从第 \(i\) 个字符串的第 \(s\) 个字符开始,跳到距离末尾 \(t\) 个字符的位置的方案数。

\(n\) 个处理方法同上,对于后 \(m\) 个,用以上思路转移,则有:

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

相关文章:

  • new 和make
  • 华建河北住房和城乡建设厅网站黄页88
  • 商城网站建设的步骤百度首页百度一下
  • 新动力网站建设网站图片切换效果
  • 北京市建设工程造价管理处 网站电脑做系统教学网站
  • 腾讯网站建设分析电商平台有哪些软件
  • 城市建设理论研究网站域名服务器ip地址查询
  • 中小型企业网站模板一个小型网站开发成本
  • 如果搭建网站百度网页版电脑版入口
  • 国外优秀企业网站欣赏网站开发毕业设计文档
  • Ceres 常用 LossFunction 对比
  • python函数
  • git使用
  • 测试开发全日制学徒班火热报名中|跟着名企大咖做真实项目,结业即上岗
  • 津坤科技天津网站建设免费的html
  • 网站建设布吉做天然文化石的网站
  • 北京网站优化找商集客吗js图片展示网站
  • 一个网站怎么做软件wordpress火车头自动分类
  • 中国建设银行人才招聘官方网站asp.net 网站管理系统
  • 衡水制作网站网站优化总结报告
  • AI 自动化智能体训练营
  • 微信商户绑定微信公众号、小程序
  • 网站搭建平台多少钱电子商务网站对比分析
  • 王晴儿 网站建设最好科技上海网站建设
  • 深圳网站建设比较做慕斯蛋糕那个网站有视频
  • 长网页网站如何做网站截流
  • 做电商网站公司简介如何建立一个微信小程序
  • 网站建设的一般过程包括哪些内容福永附近网站建设公司
  • 南京网站排名公司安丘网站制作
  • 企业网站定位阿里云快速备份网站