题解:P3012 [USACO11FEB] Cowlphabet G

news/2024/10/24 21:34:43/文章来源:https://www.cnblogs.com/anins/p/18501370

[USACO11FEB] Cowlphabet G

题意

\(P\) 种拼接方式,问由 \(U\) 个大写字母和 \(L\) 个小写字母合法组合的方案数。

输出方案数对 \(97654321\) 取模的值。

思路

动态规划,还没有人写逆推方法,刚好我做的逆推。

\(f[i][j][z]\) 表示一共有 \(i\) 个字母,其中 \(j\) 个为小写字母,最后一个字母为 \(z\) 的方案数。

那么 \(f[i][j][z]\) 的值为长度为 \(i-1\) 且最后一个字母能和 \(z\) 合法拼接的方案数之和。

\(la\) 为能在 \(z\) 前面和 \(z\) 合法组合的字母。

考虑 \(z\) 是大写还是小写:

  • \(z\) 是大写,那么应由所有 \(f[i-1][j][la]\) 转移过来。
  • 否则应由所有 \(f[i-1][j-1][la]\) 转移过来。

最后枚举最后一位是什么字母累加统计答案即可。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=97654321;
ll U, L, P;
ll f[502][251][54]; //f[i][j][z]表示一共有i个字母,其中有j个小写字母,最后一个字母为z的方案数 
vector <int> can[54];
int get(char c) {if(c>='a'&&c<='z') return c-'a'+1;return c-'A'+27;
}
int main() {cin >> U >> L >> P;char c1, c2;for(int i=1; i<=P; i++) {cin >> c1 >> c2;can[get(c2)].push_back(get(c1)); //因为是枚举上一位所以要反向统计 }for(int i=1; i<=26; i++) f[1][1][i]=1;for(int i=27; i<=52; i++) f[1][0][i]=1;for(int i=2; i<=U+L; i++) {for(int j=0; j<=L; j++) {for(int z=1; z<=52; z++) {for(int la:can[z]) {if(z<=26&&j) f[i][j][z]=(f[i][j][z]+f[i-1][j-1][la])%mod;else if(z>26) f[i][j][z]=(f[i][j][z]+f[i-1][j][la])%mod;}}}}ll ans=0;for(int i=1; i<=52; i++) ans=(ans+f[U+L][L][i])%mod;cout << ans; return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821371.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高ROI的行业或项目一般有什么样的特点

高ROI的行业或项目一般的特点有:1、市场需求的洞察;2、有效的成本控制;3、创新和技术应用;4、强大的市场定位;5、风险管理。实现高ROI的项目通常基于对市场需求的深刻洞察。这意味着项目管理者或企业家需要了解消费者的需求,预测市场趋势,并能够提供满足这些需求的产品或…

IDEA如何更改背景桌面图片

前言 我们在使用IDEA开发Java应用时,经常对着屏幕,有时候也感觉有点枯燥,这时候,就可以设置一个背景图片来缓解一下,比如说设置一张风景图片,或者设置一个美女图片,哈哈哈。 那么,我们可以如何设置呢? 如何设置 首先,我们打开设置面板。然后,我们点击下【Appearance…

灰色代码部分:要是输入名字列表,又能输出结果,但是空列表的时候就输出不了?

大家好,我是Python进阶者。 一、前言 前几天在Python白银交流群【Aciel】问了一个Python基础的问题,问题如下:灰色代码部分:要是输入名字列表,又能输出结果,但是空列表的时候就输出不了?二、实现过程 这里【瑜亮老师】给了一个指导,具体如下所示:@Aciel 循环 for nam…

assembly2

汇编2 寄存器(不同架构不同) 8086中寄存器均为16位,可存放两个字节(1byte=8bit)。 通用寄存器AX,BX,CX,DX用来存储一般性的数据,被称为通用寄存器。二进制数据在寄存器中是低位存在低地址,高位存在高地址。也可将一个寄存器分为H,L(高8位低8位)来做8位存储器。字在寄存器…

shctf[Week3] 小小cms

看到首页面 了解到YzmCMS的版本,上网搜搜这个版本存在的漏洞 发现存在任意函数调用RCE的漏洞 https://blog.csdn.net/shelter1234567/article/details/138524342 根据文章直接抄payload,进入/pay/index/pay_callback目录下下面cat /flag即可,最终的payload为 out_trade_no[0…

数据采集与融合技术实践作业二

作业①:7日天气预报爬取 1. 作业代码与实现步骤 我们将在中国气象网爬取北京、上海、广州的7日天气预报,并将数据保存到数据库中。以下是实现步骤。 步骤详解打开中国天气网:在浏览器中访问中国天气网。搜索城市:输入“北京”并打开其天气页面。检查网页结构:使用浏览器的…

clickhouse安装部署使用

一、安装 下载地址https://packages.clickhouse.com/rpm/stable/上传文件到Linux中开始安装1、进入到文件所在目录cd /usr/local/soft/clickhouse-rpms/2、使用rpm命令安装sudo rpm -ivh *.rpm3、查看状态systemctl status clickhouse-server4、启动服务systemctl start clickh…

Clickhouse的安装

一、官网下载 下载地址: https://packages.clickhouse.com/rpm/stable/ 一共需要下载这下面四个 注:一个页面没有的需要点击next进入下一个界面二、下载之后使用Xterminal打开所需要建立连接的虚拟机出现如下界面之后说明连接成功三、创建一个自己的文件夹,将先前下好的rpm文…

Oracle 排序

在Oracle中,使用 ORDER BY 语法按字符串进行排序 ASC或DESC关键字:指定升序或降序排序,默认情况下,排序是升序的。 NULLS FIRST 或 NULLS LAST 关键字:指定对空值的处理方式,默认情况下,空值排在最后。 -- 按升序排序,空值排在最后 SELECT column_name FROM table_name…

代码随想录算法训练营第24天(补第12天)| 递归遍历,迭代遍历,统一迭代

前置知识 二叉树的定义: struct BNode{int val;BNode* lchild;BNode* rchild;BNode():lchild(NULL),rchild(NULL){}BNode(int val){val=val;lchild=rchild=NULL;} };递归遍历文章链接:https://programmercarl.com/二叉树的递归遍历.html#思路 题目链接:https://leetcode.cn/…

20222403 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1. 实验内容 1.1.实践内容 (1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件 veil,加壳工具 使用C + shellcode编程(2)通过组合应用各种技术实现恶意代码免杀 如果成功实现了免杀的,简单语…

Camunda中的Execution listeners和Task listeners

在Camunda中大多数节点元素都可以设置执行监听器(Execution listeners),例如事件、顺序流、用户任务、服务任务和网关。其中用户任务除了可以设置执行监听器,还可以设置独有的用户任务监听器,相比于执行监听器,用户任务监听器可以设置更加细粒度的事件类型。 下面针对执行…