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

2023icpc网络预选赛I. Pa?sWorD(dp)

题目给定字符串长度n以及字符串s

其中出现小写字母可以代表小写字母和大写字母  比如'a'可以代表'a'和'A'

出现'?'可以代表26个小写字母和26个大写字母和10个数字

出现大写字母和数字就是原本的数

同时要求大写字母,小写字母,数字一定都存在替换完的字符串中

相邻的字母不能相同

思路

dp[2][70][8]

第一维代表用来存前一个当前状态和前一个状态

70用来存当前的字符

0-25代表小写字母,26-51代表大写字母,52-61代表大写字母,62代表什么都没有也就是初始状态

8用二进制状态压缩存是否出现过大写,小写,数字

_ _ _第一个存是否出现大写,第二个小写,第三个数字

从前往后枚举

当出现'?'

枚举61中可能(i),然后从前面62种状态(j)所有k继承

假如i是小写字母的话

如果i==j 就continue

其他情况dp[now][i][(k|(1<<2))]+=dp[pre][j][k]

同理i是大写的话就

dp[now][i][(k|(1<<1))]+=dp[pre][j][k]

但是这是一个o(64*64*8*100000)

会超时

你可以发现从前一个状态继承的就是62种状态之和减去唯一一个与当前转台不同的就行了

const int inf=0x3f3f3f3f3f3f3f3f,N=1e5+5,mod=998244353;
int dp[2][70][8];
int jian(int x,int y) {return ((x-y)%mod+mod)%mod;
}
signed main() {ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);int n;cin>>n;string s;cin>>s;s=' '+s+' ';for(int i=1; i<=n; i++) {int now=i&1,pre=1-now;if(i==1) {dp[pre][62][0]=1;}for(int j=0; j<=62; j++) {for(int k=0; k<=7; k++) {dp[now][j][k]=0;}}vector<int>a(10);for(int j=0; j<=62; j++) {for(int k=0; k<=7; k++) {a[k]+=dp[pre][j][k];a[k]%=mod;}}if(s[i]=='?') {for(int j=0; j<26; j++) {for(int k=1; k<=7; k++) {for(int w=0; w<=7; w++) {if((w|(1<<2))==k) {dp[now][j][k]+=jian(a[w],dp[pre][j][w]);dp[now][j][k]%=mod;}}}}for(int j=26; j<52; j++) {for(int k=1; k<=7; k++) {for(int w=0; w<=7; w++) {if((w|(1<<1))==k) {dp[now][j][k]+=jian(a[w],dp[pre][j][w]);dp[now][j][k]%=mod;}}}}for(int j=52; j<62; j++) {for(int k=1; k<=7; k++) {for(int w=0; w<=7; w++) {if((w|(1<<0))==k) {dp[now][j][k]+=jian(a[w],dp[pre][j][w]);dp[now][j][k]%=mod;}}}}}else if(s[i]>='a'&&s[i]<='z') {for(int j=s[i]-'a'; j<=s[i]-'a'; j++) {for(int k=1; k<=7; k++) {for(int w=0; w<=7; w++) {if((w|(1<<2))==k) {dp[now][j][k]+=jian(a[w],dp[pre][j][w]);dp[now][j][k]%=mod;}}}}for(int j=s[i]-'a'+26; j<=s[i]-'a'+26; j++) {for(int k=1; k<=7; k++) {for(int w=0; w<=7; w++) {if((w|(1<<1))==k) {dp[now][j][k]+=jian(a[w],dp[pre][j][w]);dp[now][j][k]%=mod;}}}}} else if(s[i]>='A'&&s[i]<='Z') {int t=s[i]-'A'+26;for(int k=1; k<=7; k++) {for(int w=0; w<=7; w++) {if((w|(1<<1))==k) {dp[now][t][k]+=jian(a[w],dp[pre][t][w]);dp[now][t][k]%=mod;}}}} else {int t=s[i]-'0'+52;for(int k=1; k<=7; k++) {for(int w=0; w<=7; w++) {if((w|(1<<0))==k) {dp[now][t][k]+=jian(a[w],dp[pre][t][w]);dp[now][t][k]%=mod;}}}}// for(int i=0;i<62;i++){// 	for(int k=0;k<=7;k++){// 		cout<<dp[now][i][k]<<' ';// 	}// 	cout<<"\n";// }// cout<<"--------------------\n";
}
int sum=0;
for(int i=0; i<62; i++) {sum+=dp[(n&1)][i][7];sum%=mod;
}
cout<<sum<<"\n";
}

相关文章:

2023icpc网络预选赛I. Pa?sWorD(dp)

题目给定字符串长度n以及字符串s 其中出现小写字母可以代表小写字母和大写字母 比如a可以代表a和A 出现?可以代表26个小写字母和26个大写字母和10个数字 出现大写字母和数字就是原本的数 同时要求大写字母&#xff0c;小写字母&#xff0c;数字一定都存在替换完的字符串中…...

maven本地安装jar包

在实际开发中&#xff0c;有些jar包不能通过公共库下载&#xff0c;只能本地安装。可以按照以下步骤操作&#xff1a; 1、安装命令 mvn install:install-file -DgroupIdcom.chinacreator.sm -DartifactIdfbm-sm-common -Dversion0.0.1 -Dpackagingjar -Dfile../newJar/fbm-sm…...

QT中的inherits

目录 简介&#xff1a; 实例&#xff1a; 简介&#xff1a; 在Qt中&#xff0c;可以使用inherits函数来判断一个对象是否属于某个类或其派生类。inherits函数是QObject类的成员函数&#xff0c;因此只能用于继承自QObject的类的对象。 以下是inherits函数的一般用法&#xf…...

全国职业技能大赛云计算--高职组赛题卷①(容器云)

全国职业技能大赛云计算--高职组赛题卷①&#xff08;容器云&#xff09; 第二场次题目&#xff1a;容器云平台部署与运维任务1 Docker CE及私有仓库安装任务&#xff08;5分&#xff09;任务2 基于容器的web应用系统部署任务&#xff08;15分&#xff09;任务3 基于容器的持续…...

基于springboot+vue的入校申报审批系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

安卓逆向 - EdXposed LSPosed VirtualXposed

一、引言 接上篇&#xff1a;安卓逆向 - Xposed入门教程_小馒头yy的博客-CSDN博客 我们介绍了Xposed入门安装使用&#xff0c;但是只支持到Android 8&#xff0c;并且安装模块需要重启。今天我们来看看Xposed的其他版本。 二、各种Xposed框架对比 1、Xposed 只支持到安卓8&…...

Linux三大搜索指令的区别

find&#xff1a;可以在指定的路径下进行文件的搜索 —— 真的在磁盘文件中查找 例如find /usr/bin/ -name ls which 可以在指令路径下&#xff0c;/usr/bin,搜索指令文件 例如&#xff1a;which ls whereis:在系统特定的路径下查找&#xff0c;既可以找到可执行程序&#xff…...

C++ -- 特殊类设计

目录 设计一个类&#xff0c;不能被拷贝 C98的做法 C11的做法 设计一个类&#xff0c;只能在堆上创建对象 实现方式1 实现方式2 设计一个类&#xff0c;只能在栈上创建对象 实现方式1 方式1的优化 实现方式2 设计一个类&#xff0c;不能被继承 设计模式 什么是设计…...

指针和数组笔试题的透析

指针---进阶篇&#xff08;三&#xff09; 一、前言二、一维数组例题透析&#xff1a;三、指针笔试题1.例一&#xff1a;2.例二&#xff1a;3.例三&#xff1a;4.例四&#xff1a;5.例五&#xff1a;6.例六&#xff1a; 一、前言 那么好了好了&#xff0c;宝子们&#xff0c;从…...

「UG/NX」Block UI 超级点SuperPoint

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#...

Linux——kafka常用命令

一、Kafka的常用命令包括&#xff1a; 1. 启动Zookeeper服务 前台启动&#xff1a; ./bin/zookeeper-server-start.sh config/zookeeper.properties 后台启动&#xff1a; ./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 2. 停止Zookeeper服务 .…...

GLTF编辑器如何快速重置模型原点

1、什么是模型原点&#xff1f; 模型原点是三维建模中的概念&#xff0c;它是指在一个虚拟三维空间中确定的参考点。模型原点通常位于模型的几何中心或基本组件的中心位置。如图所示&#xff1a; 可以看到模型的原点在模型的几何中心 2、模型原点的作用 知道了什么是模型原点&…...

【STL】vector常见用法及模拟实现(附源码)

目录 前言1. vector介绍及使用1.1vector的介绍1.2 vector的使用1.2.1 构造函数 1.2.2 vector对象遍历1.2.3 reserve和resize1.2.4 insert和erase 2. vector模拟实现2.1 vector迭代器失效问题2.2 模拟实现reserve函数浅拷贝问题2.3模拟实现源码2.3.1 vector.h2.3.2 test.cpp 前言…...

深度学习保姆级教学

文章目录 前言1.深度学习概论2.神经网络1.基础原理2.损失函数3.SoftMax4.前向传播5.反向传播1.反向传播介绍 6 卷积神经网络应用1.检测任务2.超分辨率重构3.医学检测4.无人驾驶5. 人脸识别 6.卷积网络和传统区别7.卷积神经网络1.卷积做了什么&#xff1f;2.节点网络1.Alexnet2.…...

计算机视觉的优势和挑战

计算机视觉&#xff08;CV&#xff09;是一项快速发展的技术&#xff0c;它具有许多优势和挑战。以下是一些可能的例子&#xff1a; 优势&#xff1a; 1. 自动化&#xff1a;CV技术可以自动化任务&#xff0c;例如图像分类、目标检测和跟踪&#xff0c;从而提高生产力和减少人…...

群晖管家+内网穿透实现公网远程访问本地黑群晖

白嫖怪狂喜&#xff01;黑群晖也能使用群晖管家啦&#xff01; 文章目录 白嫖怪狂喜&#xff01;黑群晖也能使用群晖管家啦&#xff01;1.使用环境要求&#xff1a;2.下载安装群晖管家app3.随机地址登陆群晖管家app4.固定地址登陆群晖管家app 自己组装nas的白嫖怪们虽然也可以通…...

Essential C++【读书笔记 思考总结】

本篇博客是学习过程中的笔记、思考和总结。原文链接&#xff1a; 3 泛型编程风格 Generic Programming3.1 指针的算术运算3.2 了解 Iterator&#xff08;泛型指针&#xff09;3.3 所有容器的共通操作 3 泛型编程风格 Generic Programming STL的主要组件&#xff1a;Container&…...

深度学习实战基础案例——卷积神经网络(CNN)基于Xception的猫狗识别|第2例

文章目录 一、环境准备二、数据预处理三、构建模型四、实例化模型五、训练模型5.1 构建训练函数5.2 构建测试函数5.3 开始正式训练 六、可视化精度和损失七、个体预测总结 今天使用轻量级的一个网络Xception做一个简单的猫狗识别案例&#xff0c;我的环境具体如下&#xff1a; …...

Linux Systemd 配置开机自启

博文目录 文章目录 Systemd操作方式配置方式配置示例参考 Systemd Systemd 是一个用于启动、管理和监控 Linux 系统的初始化系统。它是许多现代 Linux 发行版中默认的初始化系统&#xff0c;取代了传统的 SysVinit 和 Upstart。 Systemd 的引入在 Linux 社区引起了一些争议&…...

华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能

本文收录在专栏&#xff1a;#云计算入门与实践 - 华为云 专栏中&#xff0c;本系列博文还在更新中 相关华为云云耀云服务器L实例评测文章列表如下&#xff1a; 华为云云耀云服务器L实例评测 | 从零开始&#xff1a;云耀云服务器L实例的全面使用解析指南华为云云耀云服务器L实…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...