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个数字 出现大写字母和数字就是原本的数 同时要求大写字母,小写字母,数字一定都存在替换完的字符串中…...
maven本地安装jar包
在实际开发中,有些jar包不能通过公共库下载,只能本地安装。可以按照以下步骤操作: 1、安装命令 mvn install:install-file -DgroupIdcom.chinacreator.sm -DartifactIdfbm-sm-common -Dversion0.0.1 -Dpackagingjar -Dfile../newJar/fbm-sm…...
QT中的inherits
目录 简介: 实例: 简介: 在Qt中,可以使用inherits函数来判断一个对象是否属于某个类或其派生类。inherits函数是QObject类的成员函数,因此只能用于继承自QObject的类的对象。 以下是inherits函数的一般用法…...
全国职业技能大赛云计算--高职组赛题卷①(容器云)
全国职业技能大赛云计算--高职组赛题卷①(容器云) 第二场次题目:容器云平台部署与运维任务1 Docker CE及私有仓库安装任务(5分)任务2 基于容器的web应用系统部署任务(15分)任务3 基于容器的持续…...
基于springboot+vue的入校申报审批系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
安卓逆向 - EdXposed LSPosed VirtualXposed
一、引言 接上篇:安卓逆向 - Xposed入门教程_小馒头yy的博客-CSDN博客 我们介绍了Xposed入门安装使用,但是只支持到Android 8,并且安装模块需要重启。今天我们来看看Xposed的其他版本。 二、各种Xposed框架对比 1、Xposed 只支持到安卓8&…...
Linux三大搜索指令的区别
find:可以在指定的路径下进行文件的搜索 —— 真的在磁盘文件中查找 例如find /usr/bin/ -name ls which 可以在指令路径下,/usr/bin,搜索指令文件 例如:which ls whereis:在系统特定的路径下查找,既可以找到可执行程序ÿ…...
C++ -- 特殊类设计
目录 设计一个类,不能被拷贝 C98的做法 C11的做法 设计一个类,只能在堆上创建对象 实现方式1 实现方式2 设计一个类,只能在栈上创建对象 实现方式1 方式1的优化 实现方式2 设计一个类,不能被继承 设计模式 什么是设计…...
指针和数组笔试题的透析
指针---进阶篇(三) 一、前言二、一维数组例题透析:三、指针笔试题1.例一:2.例二:3.例三:4.例四:5.例五:6.例六: 一、前言 那么好了好了,宝子们,从…...
「UG/NX」Block UI 超级点SuperPoint
✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#...
Linux——kafka常用命令
一、Kafka的常用命令包括: 1. 启动Zookeeper服务 前台启动: ./bin/zookeeper-server-start.sh config/zookeeper.properties 后台启动: ./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 2. 停止Zookeeper服务 .…...
GLTF编辑器如何快速重置模型原点
1、什么是模型原点? 模型原点是三维建模中的概念,它是指在一个虚拟三维空间中确定的参考点。模型原点通常位于模型的几何中心或基本组件的中心位置。如图所示: 可以看到模型的原点在模型的几何中心 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.卷积做了什么?2.节点网络1.Alexnet2.…...
计算机视觉的优势和挑战
计算机视觉(CV)是一项快速发展的技术,它具有许多优势和挑战。以下是一些可能的例子: 优势: 1. 自动化:CV技术可以自动化任务,例如图像分类、目标检测和跟踪,从而提高生产力和减少人…...
群晖管家+内网穿透实现公网远程访问本地黑群晖
白嫖怪狂喜!黑群晖也能使用群晖管家啦! 文章目录 白嫖怪狂喜!黑群晖也能使用群晖管家啦!1.使用环境要求:2.下载安装群晖管家app3.随机地址登陆群晖管家app4.固定地址登陆群晖管家app 自己组装nas的白嫖怪们虽然也可以通…...
Essential C++【读书笔记 思考总结】
本篇博客是学习过程中的笔记、思考和总结。原文链接: 3 泛型编程风格 Generic Programming3.1 指针的算术运算3.2 了解 Iterator(泛型指针)3.3 所有容器的共通操作 3 泛型编程风格 Generic Programming STL的主要组件:Container&…...
深度学习实战基础案例——卷积神经网络(CNN)基于Xception的猫狗识别|第2例
文章目录 一、环境准备二、数据预处理三、构建模型四、实例化模型五、训练模型5.1 构建训练函数5.2 构建测试函数5.3 开始正式训练 六、可视化精度和损失七、个体预测总结 今天使用轻量级的一个网络Xception做一个简单的猫狗识别案例,我的环境具体如下: …...
Linux Systemd 配置开机自启
博文目录 文章目录 Systemd操作方式配置方式配置示例参考 Systemd Systemd 是一个用于启动、管理和监控 Linux 系统的初始化系统。它是许多现代 Linux 发行版中默认的初始化系统,取代了传统的 SysVinit 和 Upstart。 Systemd 的引入在 Linux 社区引起了一些争议&…...
华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能
本文收录在专栏:#云计算入门与实践 - 华为云 专栏中,本系列博文还在更新中 相关华为云云耀云服务器L实例评测文章列表如下: 华为云云耀云服务器L实例评测 | 从零开始:云耀云服务器L实例的全面使用解析指南华为云云耀云服务器L实…...
快速上手:CYBER-VISION零号协议Node.js后端服务集成指南
快速上手:CYBER-VISION零号协议Node.js后端服务集成指南 你是不是已经部署好了CYBER-VISION零号协议模型,看着那个命令行界面,心里琢磨着:“这玩意儿怎么才能接到我的Web应用里去?” 别急,这正是我们今天要…...
OpenClaw极简配置法:1条命令启动Qwen3.5-9B-AWQ-4bit沙盒体验
OpenClaw极简配置法:1条命令启动Qwen3.5-9B-AWQ-4bit沙盒体验 1. 为什么选择沙盒体验 第一次接触OpenClaw时,我被它强大的本地自动化能力吸引,但复杂的本地安装过程让我望而却步。直到发现平台提供的预置镜像方案,才真正体会到&…...
用PyQt和GraphicsView打造轻量级跑团地图编辑器:从零实现Inkarnate核心功能
1. 为什么选择PyQt打造跑团地图编辑器 跑团爱好者们都知道,一张精美的地图对游戏体验有多重要。Inkarnate确实是个不错的选择,界面友好、素材丰富,但免费版功能受限,付费版每年25美元的价格也让不少玩家犹豫。我自己就经历过这样的…...
TVA深度解析(15):同步实现缺陷判定的高鲁棒性与高准确率
在AI视觉智能体与物理世界交互的宏大图景中,视觉系统不仅是智能体感知环境的“眼睛”,更是其执行决策的“导航仪”。无论上层的认知推理多么精妙,底层的感知若是不稳,一切智能都将成为空中楼阁。因此,AI智能体视觉检测…...
2026年初中中考英语大纲词汇表1600个电子版PDF(含单词音频和默写本)
2026年初中英语大纲词汇表1600词 核心内容: 1600个初中英语考纲词汇完整列表(按新课标要求整理)配套默写训练本(含汉译英英译汉双向练习)专业录制的单词发音音频包 资源特性: 电子版采用可打印PDF格式支…...
OpenClaw技能组合技:用SecGPT-14B实现ATTCK框架检测
OpenClaw技能组合技:用SecGPT-14B实现ATT&CK框架检测 1. 为什么需要自动化安全检测 去年处理某次安全事件时,我花了整整三天手工比对日志中的异常行为与ATT&CK框架。这种重复劳动让我开始思考:能否让AI自动完成TTPs(战术…...
矽力杰 Silergy SY8521 降压稳压器 佰祥电子
100V母线辅助供电的“空间魔术”:SY8521全集成同步降压方案实战拆解在隔离型通信偏置电源、BMS高压从板以及汽车电子的48V/60V系统中,硬件团队在设计辅助供电轨时常常面临极其严苛的物理与电气双重挑战。系统母线在遭遇抛负载(Load Dump&…...
Legacy-iOS-Kit:让旧款iOS设备重获新生的开源工具完整指南
Legacy-iOS-Kit:让旧款iOS设备重获新生的开源工具完整指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...
3个实用技巧:Anemone3DS让3DS玩家实现主题个性化定制
3个实用技巧:Anemone3DS让3DS玩家实现主题个性化定制 【免费下载链接】Anemone3DS A theme and boot splash manager for the Nintendo 3DS console 项目地址: https://gitcode.com/gh_mirrors/an/Anemone3DS Anemone3DS是一款专为任天堂3DS掌机设计的主题和…...
G-Helper华硕优化工具:5分钟解锁300%性能提升的轻量级解决方案
G-Helper华硕优化工具:5分钟解锁300%性能提升的轻量级解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, S…...
