序列计数

对于一个小写字母的序列每次可以将相邻两个不同的小写字母都变为二者之一,可以进行无限次这样的操作,求解可以产生多少种不同的序列。

首先我们不能考虑操作,而是考虑合法序列,显然最后会形成若干个区间,然后每个区间必然是对应了最初的一个位置,并且需要满足位置的相对顺序不变,所以问题等价于统计本质不同的满足相邻字符不同的子序列个数,然后利用组合数直接计算。

那么考虑动态规划,如果采用求子序列个数的dp,发现无法很好处理相邻字符不同,但是如果利用子序列自动机,就很好处理,这样dpi,jdp_{i,j}dpi,j​表示当前匹配到i这个字符,然后长度为j的方案数,然后每次O(26)O(26)O(26)刷表法转移,总复杂度O(26n2)O(26n^2)O(26n2)。
这个方法的核心思路就在于利用了自动机优化dp,处理一些难以处理的限制。

注意细节:

  1. 数组开小了。。。这就是我小数据对拍都过了,但是大数据全WA的原因,我还以为是取模的问题。。。
  2. 暴力哈希的时候单模数比不过ULL自然溢出,很容易就会发生冲突。

考虑正解,只是在原来的基础上进行优化,发现使用填表法效率更高,每个点对应的转移是一段区间,所以可以前缀和优化。

序列计数(动态规划/自动机/前缀和优化)相关推荐

  1. 2019.02.11 bzoj4818: [Sdoi2017]序列计数(矩阵快速幂优化dp)

    传送门 题意简述:问有多少长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数,且其中至少有一个数是质数,答案对201704082017040820170408取模(n≤1e9, ...

  2. 【BZOJ4818】【SDOI2017】序列计数 [矩阵乘法][DP]

    序列计数 Time Limit: 30 Sec  Memory Limit: 128 MB [Submit][Status][Discuss] Description Alice想要得到一个长度为n的 ...

  3. [APIO2016] 划艇(dp + 组合数 + 前缀和优化)

    problem luogu-P3643 solution 有个显然的暴力 dpdpdp.设 dp(i,j):dp(i,j):dp(i,j): 到了第 iii 个学校,其参加且派出 jjj 个划艇的方案 ...

  4. 第十一届山东省大学生程序设计竞赛 L. Construction of 5G Base Stations(概率期望,递推前缀和优化)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 第十一届山东省大学生程序设计竞赛 L. Construction of 5G Base Station ...

  5. codeforces #274 C. Riding in a Lift dp+前缀和优化

    codeforces #274  C. Riding in a Lift   dp+前缀和优化 Imagine that you are in a building that has exactly  ...

  6. 前缀和优化+计蒜客 泡咖啡

    题目: 蒜头君想泡咖啡喝.现在他得到了 nn 份菜谱,每个菜谱上都给了两个数l,rl,rl,r代表温度区间在[l,r][l,r][l,r] 度泡出来的咖啡会很好喝. 可是菜谱太多了,蒜头君一度感到疑惑 ...

  7. bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——前缀和优化dp / 排列组合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 好简单呀.而且是自己想出来的. dp[ i ]表示最后一个牡牛在 i 的方案数. 当前 ...

  8. bzoj 4818: [Sdoi2017]序列计数(DP+矩阵快速幂)

    4818: [Sdoi2017]序列计数 Time Limit: 30 Sec  Memory Limit: 128 MB Submit: 769  Solved: 463 [Submit][Stat ...

  9. 玲珑oj 1032 (容斥原理或前缀和优化dp)

    题面十分简单,n个球放m个盒子,可以空,盒子不同,要求球数最多的盒子唯一,方案数题面十分简单,n个球放m个盒子,可以空,盒子不同,要求球数最多的盒子唯一,方案数 n,m都是500,考虑复杂度O(n3) ...

最新文章

  1. 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate...
  2. iOS 之 tableView的复用、设计模式
  3. 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放...
  4. win2003禁止web等目录执行exe,bat,com的方法
  5. Java 8 - 02 Lambda Expression
  6. C语言 编写程序:由键盘输入一个字符判断是字母数字还是其他符号。
  7. 【LiveVideoStack线上分享】— 海外复杂网络环境下的视频播放体验优化
  8. win8关闭uefi+linux,UEFI启动是什么?Win8关闭UEFI引导方式的方法
  9. 一步一步写算法(之 算法总结)
  10. 最精确的噪音测试软件,关于噪音测试App的选择与使用
  11. 【职场日语】日文简历模板
  12. 【设计心理学】格式塔理论
  13. php注册页面 邮件回复,PHP发送邮件确认验证注册功能示例【修改别人邮件类】...
  14. teamviewer存在linux版本_linux安装teamviewer
  15. oracle 自动提交 配置文件,使用 netcfg 命令配置配置文件 - Oracle Solaris 管理:网络接口和网络虚拟化...
  16. (P24)进程间通信介绍二:死锁 ,信号量与PV原语 ,用PV原语解决司机与售票员问题 ,用PV原语解决民航售票问题 ,用PV原语解决汽车租赁问题
  17. php地图找房代码,地图搜租房功能实现
  18. 图的存储 —— 邻接矩阵
  19. 列表页面的展开以及收起
  20. babylon.js实战教程

热门文章

  1. numpy拼接_巧用numpy切分图片
  2. java程序 开发工具_15款Java程序员必备的开发工具
  3. python进程join的用法_python 进程介绍 进程简单使用 join 验证空间隔离
  4. 清华博士生放弃科研,跑去当中学教师,值得吗?
  5. 搞笑动图:这些痛,只有程序员懂…
  6. Mysql修改字段名和长度_mysql中修改表字段名/字段长度/字段类型详解
  7. c语言中把每个字母向前移1位,C语言:将字符串中的前导*号全部移到字符串的尾部。...
  8. python关联分析sklearn_Python3利用pandas,sklearn进行关联度分析以及预测的demo
  9. JAVA中pin什么意思_java语言中的多态概述
  10. html li 做瀑布流,js实现瀑布流效果(自动生成新的内容)