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

cf296b

CF296B Yaroslav and Two Strings

link

题意

给定两个由数字和 ? 组成的字符串 \(s,t\),将 ? 替换为数字。若 \(s',t'\) 中有 \(s'_i>w'_i,s'_j<w'_j(1\leq i,j\leq n)\),则是一种合法的替换。求合法的方案数对 \(10^9+7\) 取模。\(1\leq n\leq 10^5\)

题解

考虑 dp。设 \(f_{i,0/1,0/1}\) 表示第 \(i\) 位前有无 \(s_i>w_i\) 有无 \(s_i<w_i\)。转移直接枚举 \(s_i,w_i\) 的情况,\(f_{i,j|[c1>c2],k|[c1<c2]}=f_{i,j|[c1>c2],k|[c1<c2]}+f_{i-1,j,k}\)。注意初始 \(f_{0,0,0}=1\)。复杂度为大常数 \(O(n)\)。aclink。

  • 代码好写。

代码

#include<bits/stdc++.h>
#define i64 long long
#define L(a,b,c,d) for(int a=b;a<=c;a+=d)
#define R(a,b,c,d) for(int a=b;a>=c;a-=d)using namespace std;
const int N=1e5+5,M=1e9+7;void solve();
int n;
i64 f[N][2][2];
char s[N],t[N];signed main(){int Test=1;
//  scanf("%d",&Test);while(Test--) solve();return 0;
}void solve(){scanf("%d",&n);scanf("%s%s",s+1,t+1);f[0][0][0]=1;L(i,1,n,1){L(x,0,1,1){L(y,0,1,1){L(j,0,9,1){L(k,0,9,1){if((s[i]=='0'+j||s[i]=='?')&&(t[i]=='0'+k||t[i]=='?')){f[i][x|(j>k)][y|(j<k)]=(f[i][x|(j>k)][y|(j<k)]+f[i-1][x][y])%M;}}}}}}printf("%lld\n",f[n][1][1]);
}
http://www.jsqmd.com/news/8777/

相关文章:

  • 云原生与DevOps融合实践:加速企业数字化转型的加速器 - 详解
  • 第一次使用Ttpora
  • 原版 Sunshine+虚拟显示器实现熄屏串流
  • 2025国庆Day4
  • gis坐标计算
  • Spring AI Alibaba + Nacos 动态 MCP Server 代理方案 - 详解
  • trick 小记
  • NKOJ全TJ计划——NP11744
  • ROIR 2025
  • 实用指南:万兴PDF手机版
  • python编写AI生常用匡架及使用指令集
  • 10月5日在图书馆的3/4天
  • 基于原生JavaScript前端和 Flask 后端的Todo 应用 - 详解
  • 123123
  • 2025.10.5 2024CCPC郑州
  • 20250531MATLAB三维绘图 - 教程
  • 概率期望dp 复习笔记
  • 【计网】第六章(网络层)习题测试 - 实践
  • 04-springIOC03-通过配置类实现IOC
  • 完整教程:爬虫--以爬取小说为例
  • 2025.10
  • 04-delphi10.3下PDFium5.8的PdfView1查找文本
  • 仅需3%训练数据的文本归一化技术
  • 价值原语博弈协议:价值原语共识锚定原则
  • 实用指南:工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包
  • 25fall做题记录-October - Amy
  • 嗯嗯
  • 完整教程:HTTPS
  • 2025桩基检测机构最新企业咨询服务推荐排行榜,海上桩基检测,水上桩基检测服务推荐这十家公司!
  • 算法坑点