设 fi:1∼if_{i}:1\sim ifi​:1∼i 能否分成若干个首尾相同的区间

则有 fi=ORj<i(fj−1∧aj=ai)f_{i}=\text{OR}_{j<i}(f_{j-1}\wedge a_j=a_i)fi​=ORj<i​(fj−1​∧aj​=ai​)。

这是最原始的暴力 dpdpdp,时间 O(n2m)O(n^2m)O(n2m)。

事实上,这个过程中 iii 只有选那些 fj−1=1f_{j-1}=1fj−1​=1 的 aja_jaj​ 构成的颜色集合才能使得 fi=1f_i=1fi​=1。

因此有效状态只有不同颜色集合大小和上个位置的 fff 值。

我们考虑设计只跟有效状态挂钩的 dpdpdp。

设 dpi,j,k:dp_{i,j,k}:dpi,j,k​: 处理完了 [1,i)[1,i)[1,i) 的信息,有 jjj 个满足的不同颜色,且上一位( fi−1f_{i-1}fi−1​ )是否为 111。

有四种转移情况:

  • dpi+1,j,1←dpi,j,1∗jdp_{i+1,j,1}\leftarrow dp_{i,j,1}*jdpi+1,j,1​←dpi,j,1​∗j

    虽然 fi−1=1f_{i-1}=1fi−1​=1,但 aia_iai​ 选取的颜色是前面 jjj 个合法位置上的任一颜色,颜色集合并未发生改变,同时有 fi=1f_i=1fi​=1。

  • dpi+1,j,1←dpi,j,0∗jdp_{i+1,j,1}\leftarrow dp_{i,j,0}*jdpi+1,j,1​←dpi,j,0​∗j

    虽然 fi−1=0,if_{i-1}=0,ifi−1​=0,i 不可能产生贡献。但反正前面至少有 jjj 个位置满足 fk−1=1f_{k-1}=1fk−1​=1 且 aka_kak​ 互不相同。

    iii 仍然可以让 aia_iai​ 成为这其中任一颜色,也会使得 fi=1f_i=1fi​=1。

  • dpi+1,j,0←(m−j)dpi,j,0dp_{i+1,j,0}\leftarrow (m-j)dp_{i,j,0}dpi+1,j,0​←(m−j)dpi,j,0​

    fi=0f_i=0fi​=0 说明 aia_iai​ 没有和前面的 jjj 个位置有关联,颜色是剩下的 m−jm-jm−j 种,合法颜色集合大小 jjj 也不会增。

  • dpi+1,j+1,0←(m−j)dpi,j,1dp_{i+1,j+1,0}\leftarrow (m-j)dp_{i,j,1}dpi+1,j+1,0​←(m−j)dpi,j,1​

    fi=0f_i=0fi​=0 但 fi−1=1f_{i-1}=1fi−1​=1 这意味着,aia_iai​ 的颜色与前面合法的 jjj 个位置不同,但 iii 此时进入候选位置,合法颜色集合大小会 +1+1+1。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mod 1000000007
#define maxn 3005
int n, m;
int f[maxn][maxn][2];signed main() {scanf( "%lld %lld", &n, &m );f[0][0][0] = f[0][0][1] = 1;for( int i = 0;i < n;i ++ )for( int j = 0;j <= i;j ++ ) {( f[i + 1][j][1] += ( f[i][j][0] + f[i][j][1] ) % mod * j ) %= mod;( f[i + 1][j + 1][0] += f[i][j][1] * ( m - j ) ) %= mod;( f[i + 1][j][0] += f[i][j][0] * ( m - j ) ) %= mod;}int ans = 0;for( int i = 0;i <= n;i ++ )( ans += f[n][i][1] ) %= mod;printf( "%lld\n", ans );;return 0;
}

[WC 2022 Day3 zmy] Od deski do deski(dp)相关推荐

  1. 2022年全球及中国固态电解质(SSE)行业应用现状与十四五投资潜力分析报告

    2022年全球及中国固态电解质(SSE)行业应用现状与十四五投资潜力分析报告 --------------------------------------- <修订日期>:2021年12月 ...

  2. OD使用教程7(上)- 调试篇07|解密系列

    OD使用教程7(上)- 调试篇07 让编程改变世界 Change the world by program   小甲鱼觉得,掌握逆向的思维尤为重要. 所以在咱的OD使用教程中,不单会告诉你怎么去逆向这 ...

  3. 2022第三届全国大学生网络安全精英赛练习题(7)

    全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(7) 文章目录 全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(7) 总结 601.在实体特征的鉴别中, ...

  4. 2022第三届全国大学生网络安全精英赛练习题(1)

    全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(1) 文章目录 全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(1) 总结 1.某公司技术人员利于自己的 ...

  5. 2022 年全球重大经济事件盘点( I )

    2022 年,全球经济正面临百年未有之大变局,接踵而至的大事件造成今年行情剧烈波动,以往的投资逻辑不断遭遇修改. 正所谓阳光之下没有新鲜事.通过对于重大事件的复盘,分析了解过往历史脉络,投资者方能温故 ...

  6. 2022第三届全国大学生网络安全精英赛练习题(2)

    全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(2) 文章目录 全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(2) 总结 101.通过"计算 ...

  7. 2022年计算机软件水平考试信息系统项目管理(高级)练习题及答案

    2022年计算机软件水平考试信息系统项目管理(高级)练习题及答案,根据最新计算机软件水平考试信息系统项目管理(高级)大纲与历年计算机软件水平考试信息系统项目管理(高级)真题汇总编写,包含计算机软件水平 ...

  8. 2022年计算机软件水平考试电子商务设计师(中级)练习题及答案

    1.企业在选择电子商务系统时,主要遵循的原则不包括 (B) A. 尽量开放.可扩充 B. 尽量采用新技术 C. 符合企业信息化的主流技术 D. 有较好的市场占有率 2.关于网页中 DIV 文本对齐的设 ...

  9. 2022第三届全国大学生网络安全精英赛练习题(5)

    全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(5) 文章目录 全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(5) 总结 401.社会工程学攻击是利用 ...

最新文章

  1. iOS 自定义相机,带水印!
  2. python3远程连接MySQL
  3. ASP.NET中使用Global.asax文件
  4. ros知识:关于catkin_init_workspace不能执行的错误
  5. 2.3.2 spring属性注入-注解注入-半注解注入-后序
  6. Python---多任务介绍以及Thread的基本使用
  7. 把所有的谎言献给你β
  8. centos7 搭建keepalived+Nginx+tomcat
  9. 搜狗AI助力居理新房打造智能售房新模式
  10. python初心记录一
  11. selenium2.0(WebDriver) API - 转载自:http://www.cnblogs.com/puresoul/p/3477918.html
  12. DoraHacks的笔记
  13. 2016.05.17开通自己的博客
  14. php 养宠物,养宠物必知的十个知识,关爱宠物注重细节
  15. 软件工程师的职业建议
  16. 深度学习在音频信号处理领域中的进展(截止至2019年5月)
  17. Python三维绘图:马鞍面
  18. 生成对抗网络GANs
  19. 中国矿业大学计算机学院刘一凡,中国矿业大学计算机学院2013级国家奖学金获得者刘一凡采访记...
  20. pb 修改数据窗口种指定字段位置_PB数据窗口对象之字段的修改属性

热门文章

  1. 虹科LiDAR测量物料体积为行业带来革命性变化
  2. 英飞凌TC27x系统架构
  3. 智能小车红外跟随原理
  4. DDR3测试1-差分信号和单端信号的电压阈值
  5. linux 安装lrzsz实现 XShell 上传下载 命令 rz、sz
  6. Linux0.11内核源码解析01
  7. mysqldump 命令参数大全
  8. 托管程序与非托管程序的区别
  9. 计算机相关零碎知识(持续更新)
  10. Linux操作系统版本、内核版本