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

2024年CCPC网络赛 D题个人理解

放一个传送门

https://codeforces.com/gym/105336

在这里插入图片描述

主要思路

两个串的长度都是100,但是根据题目给出的还原方式,最终还原出来的串长大概在 2 100 2^{100} 2100 左右,而还原的次数最多 100 次。所以我们应该把目标放在,计算每一次还原后,目标串的字串分别有多少。具体写法请看代码(个人蒟蒻代码,轻点喷)

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;const ll M = 1e6 + 10;
const ll inf = 1e9 + 5;
const ll P = (ll)998244353;string s, t;int ns, nt;//s串长度,t串长度
ll dp[110][110][110];//[k][i][j] 【第k次操作】【t字串的左边界】【t字串的右边界】
ll temp[110][110];//将新加入的字母,合并到左边后的集合void solve()
{cin >> s >> t;ns = s.size();nt = t.size();s = '#' + s;t = '#' + t;for (int k = 1; k <= ns; k++){//先初始化此轮左边集合for (int i = 1; i <= nt; i++){for (int j = i; j <= nt; j++){temp[i][j] = dp[k - 1][i][j];}}//将中间字母合并到左集合后,更新此集合for (int i = 1; i <= nt; i++){if (s[k] == t[i]){temp[i][i]++;//自己单独for (int j = i + 1; j <= nt; j++){//例如:中间"a"的出现下,要新增"b"数量个"ab"给temp集合temp[i][j] += dp[k - 1][i + 1][j];temp[i][j] %= P;}}}//大集合先加上左边的和右边的分别单独贡献for (int i = 1; i <= nt; i++){for (int j = i; j <= nt; j++){dp[k][i][j] = (dp[k - 1][i][j] + temp[i][j]) % P;}}//再考虑左右搭配的贡献for (int i = 1; i <= nt; i++){for (int j = i + 1; j <= nt; j++){for (int q = i; q < j; q++){dp[k][i][j] += (dp[k - 1][i][q] * temp[q + 1][j]) % P;dp[k][i][j] %= P;}}}}cout << dp[ns][1][nt] % P << '\n';
}int main()
{std::ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T = 1;//cin >> T;while (T--)solve();return 0;
}

相关文章:

  • AI绘画笔记
  • Eprime学习【E-basic语言、心理学实验程序设计】
  • 视频回放 | DolphinDB 2024 年度峰会主会场演讲精彩回顾
  • matplotlib画动态图
  • 【Unity踩坑】创建新项目后提示编译错误要进入安全模式
  • Linux - Linux安装部署Maven以及环境变量配置
  • 测试开发基础——测试用例的设计
  • 信创实践(3):基于x2openEuler将CentOS升级成openEuler,享受其带来的创新和安全特性
  • 解决 webpack 配置 sass-loader后报错,无法正常build
  • EasyExcel 学习之 导出 “类型及精度问题”
  • requests请求设置超时时间python
  • Debezium系列之:大规模应用debezium server采集数据库,从每个Debezium Server中导出JMX采集指标
  • 怎么利用接口发送图文彩信
  • 所有即将登陆iPhone 16的Apple智能功能以及预期发布时间
  • 监听键盘事件
  • 「面试题」如何实现一个圣杯布局?
  • 08.Android之View事件问题
  • Angular数据绑定机制
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • egg(89)--egg之redis的发布和订阅
  • ESLint简单操作
  • extjs4学习之配置
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • React16时代,该用什么姿势写 React ?
  • Spring-boot 启动时碰到的错误
  • Vue UI框架库开发介绍
  • Vue2.0 实现互斥
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 算法-插入排序
  • 学习Vue.js的五个小例子
  • 用 Swift 编写面向协议的视图
  • 用简单代码看卷积组块发展
  • 走向全栈之MongoDB的使用
  • hi-nginx-1.3.4编译安装
  • puppet连载22:define用法
  • 大数据全解:定义、价值及挑战
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #### golang中【堆】的使用及底层 ####
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (ibm)Java 语言的 XPath API
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (void) (_x == _y)的作用
  • (二)windows配置JDK环境
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (九)One-Wire总线-DS18B20
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)jQuery 基础
  • ***利用Ms05002溢出找“肉鸡
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .net core + vue 搭建前后端分离的框架
  • .net core使用EPPlus设置Excel的页眉和页脚