当前位置: 首页 > 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.hskmm.com/?act=detail&tid=24993

相关文章:

  • 第一次使用Ttpora
  • Apache反向代理
  • 原版 Sunshine+虚拟显示器实现熄屏串流
  • 2025国庆Day4
  • gis坐标计算
  • day17 课程()
  • NKOJ全TJ计划——NP11744
  • ROIR 2025
  • trick 小记
  • python编写AI生常用匡架及使用指令集
  • 123123
  • 1005模拟赛总结
  • 2025.10.5 2024CCPC郑州
  • 20250531MATLAB三维绘图 - 教程
  • 概率期望dp 复习笔记
  • 2025.10
  • PCIe扫盲——物理层逻辑部分基础(一)
  • 仅需3%训练数据的文本归一化技术
  • 价值原语博弈协议:价值原语共识锚定原则
  • 实用指南:工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包
  • 25fall做题记录-October - Amy
  • 嗯嗯
  • PCIe扫盲——AckNak 机制详解(二)
  • ASP.NET Core SignalR 身份认证集成指南(Identity + JWT) - 详解
  • utorrent 2.2.1
  • 2025热缩管厂家 TOP 企业品牌推荐排行榜,氟橡胶,双壁,线缆标识,防滑花纹,DR 耐油橡胶,PVDF,标识,航插用,军用热缩管公司推荐!
  • 市场交易反心理特征之八:劣仓驱逐良仓
  • 做题笔记18
  • 2025桩基检测机构最新企业咨询服务推荐排行榜,海上桩基检测,水上桩基检测服务推荐这十家公司!
  • 算法坑点