首页 > 其他分享 >[PA2021] Od deski do deski

[PA2021] Od deski do deski

时间:2023-11-17 20:14:10浏览次数:30  
标签:do int Od 合法 deski 序列

[PA2021] Od deski do deski

看似简单,实则考察的是选手的 DP 基本功,如果像我一样只会观察性质就做不出来这题。

性质:合法的序列一定是由若干个子串按照顺序拼起来的,其中每个子串的开头和结尾是一样的。

然后的想法就是设 \(f_i\) 表示子串 \(i\) 能一次消掉的方案数,然后就会一直算重没法做。

这种感觉就像当年 csp,就是做计数 dp 内味。

从头开始,考虑更好地描述一个序列是否合法,有一个 dp:设 \(f_i\) 表示 \([1, i]\) 是否合法,值域为 \([0,1]\),然后可以枚举最后一段转移。

有没有什么办法可以忽略原序列的信息就转移这个东西呢?有!直接设 \(j\) 表示有 \(j\) 种数填进去就能使得 \(f_i\) 合法。这样我们就不用关心原序列的信息了。

考虑在此基础上可以设计原题的状态:\(f_{i,j,0/1}\) 表示长度为 \(i\) 的序列,有 \(j\) 种数填入后就变合法,当前是否合法的方案数,转移是平凡的。

const int N = 3010;
int n, m;
int f[N][N][2];

const int P = 1e9 + 7;
void add(int &x, int y) {
  (x += y) >= P ? x -= P : 0;
}

int main() {
  read(n, m);
  f[0][0][1] = 1;
  for(int i = 1; i <= n; ++i) {
    for(int j = 0; j < i; ++j) {
      add(f[i][j + 1][0], 1ll * f[i - 1][j][1] * (m - j) % P);
      add(f[i][j][1], 1ll * f[i - 1][j][1] * j % P);
      add(f[i][j][1], 1ll * f[i - 1][j][0] * j % P);
      add(f[i][j][0], 1ll * f[i - 1][j][0] * (m - j) % P);
    }
  }
  int ans = 0;
  for(int i = 0; i <= n; ++i)
    add(ans, f[n][i][1]);
  printf("%d\n",ans);
}

标签:do,int,Od,合法,deski,序列
From: https://www.cnblogs.com/DCH233/p/17839555.html

相关文章

  • Vivado
    今天erp啥也没整,就整了些板子,用这个Vivado这个软件,不太会用。Vivado是一款主流的FPGA的IDE,可以实现FPGA的一整套流程,包括设计入口、综合、布置与路由以及验证/仿真工具。它主要将RTL代码综合实现生成比特流,最终可以下载到FPGA板上观察现象。此外,Vivado还采用了用于快速综合和验证......
  • 【Node.js】 - 概念 fs path模块 压缩HTML代码
    一、概念Node.js是一个跨平台javaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序作用:1.编写数据接口,提供网页资源浏览功能等等2.前端工程化二、什么是前端工程化开发项目直到上线,过程中集成的所有工具和技术Node.js是前端工程化的基础(因为Node.js可以主动读取前端代......
  • vscode配置js片段及格式处理
    1、前期工作需要将代码块处理成要求的格式,即变量用$开头标记,每一个tab缩进用\t替换,代码中的双引号用转义字符\"替换,每一行放双引号中,行末加逗号。。。具体操作及截图如下:(1)、代码中的变量用“$1”,“$2”,“$3”....等替换(2)、在文本编辑器或者vscode中将缩进用\t替换(3)、将代......
  • vscode插件:koroFileHeader(添加注释文件头)
    第一步:安装插件koroFileHeader。如下图1 第二步:配置setting。将下面的json代码配置到setting中。"fileheader.configObj":{"createFileTime":true,"language":{"languagetest":{"head":"/$$",......
  • Windows rustup update 速度慢,使用字节跳动Rust镜像加速
    不设置镜像加速rustup更新升级会非常慢RsProxy字节跳动的Rust镜像 Windows想要使用这个镜像需要按照官方提示去设置两个系统变量分别为 RUSTUP_DIST_SERVER RUSTUP_UPDATE_ROOT 之后来到当前用户文件夹下修改cargo的配置文件(没有就创建一个)C:\Users\你PC名\.c......
  • go.mod: checksum mismatch 报错解决办法
    来源:http://www.shanhubei.com/archives/2842.html升级go.mod依赖版本之后会报错。go.mod里的依赖项版本号升级之后,本地下载的缓存并没有清理掉还是旧的版本,所以把gomod缓存清理掉然后删掉gosum重新生成。goclean-modcachermgo.sum......
  • DOORS和Reqtify—需求管理和需求追溯工具
    产品概述    IBMRationalDOORS可实现对整个产品的全生命周期需求管理,覆盖从需求、到设计以及测试阶段,是一款被广泛使用的企业级专业需求管理工具。DOORS可以将项目开发过程中产生的各级需求和与需求相关的文件、网址URL进行链接管理,同时能够对需求进行影响分析。DOORS自......
  • docker 部署nginx
     docker部署Nginx一、先启动一次,把配置文件copy出来 #创建并运行容器,容器命名为nginx dockerrun--namenginx-p80:80-dnginx#创建目录存放mkdir /usr/local/docker-nginx#从容器中copy配置 dockercpnginx:/etc/nginx/nginx.conf/usr/local/docker-nginx......
  • Hadoop学习(一) 搭建伪分布式集群
    文章结构1.准备工作1.1配置IP1.2关闭防火墙1.3修改主机名并与IP绑定1.4创建新用户1.5配置免密匙 2.安装并配置Hadoop伪分布式集群2.1安装Java2.2安装配置Hadoop伪分布式集群 1.准备工作1.1配置IP首先进入该路......
  • window允许通过密钥实现ssh免密登录
    //打开命令提示符或PowerShell窗口输入以下命令生成SSH密钥对:ssh-keygen-trsa-b4096默认生成位置:C:\Users\用户名\.ssh\ 找到id_rsa.pub文件将里面的内容添加到服务器的C:\ProgramData\ssh\administrators_authorized_keys文件中如果文件不存在则自行创......