当前位置: 首页 > 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.gsyq.cn/news/16186.html

相关文章:

  • 原版 Sunshine+虚拟显示器实现熄屏串流
  • 实用指南:万兴PDF手机版
  • 价值原语博弈协议:价值原语共识锚定原则
  • 25fall做题记录-October - Amy
  • 2025桩基检测机构最新企业咨询服务推荐排行榜,海上桩基检测,水上桩基检测服务推荐这十家公司!
  • 算法坑点
  • ASP.NET Core SignalR 身份认证集成指南(Identity + JWT) - 详解
  • LeetCode 139. 单词拆分(Word Break) - 动态规划深度解析 - 详解
  • 高考加油!UI界面生成器! - 教程
  • 分布式微服务系统架构第142集:全栈构建
  • 实用指南:云原生时代 Kafka 深度实践:03进阶特性与最佳实践
  • 实用指南:MyBatis 的动态 SQL
  • 【开源程序】 黑客帝国系列系统监控软件:基于PyQt5的全方位资源监控系统
  • VR/AR 显示瓶颈将破!铁电液晶技巧迎来关键突破
  • Axure 基础入门 - 实践
  • 博客园-awescnb插件-geek皮肤异常问题修复
  • ROM和RAM
  • 整理数据制作 直方图,箱须图,概率密度估计(KDE)图
  • 基于本地模型+多级校验设计的高效缓存,有效节省token数量(有点鸡肋doge) - 详解
  • 深入解析:Elasticsearch的集群管理介绍
  • 实用指南:Appium如何支持ios真机测试
  • 目标检测任务的评估指标P-R曲线 - 指南
  • 【JNI】JNI环境搭建
  • CS自学笔记
  • 2025升降机厂家最新企业品牌推荐排行榜,固定式升降机,液压升降机,电动升降机,铝合金式升降机公司推荐!
  • 算法伦理与机器学习研究获PROSE奖
  • 【Unity】相机 Cameras - 实践
  • 2025 年碳纤维布厂家最新推荐排行榜:精选建筑碳纤维布 ,加固碳纤维布,300克碳纤维布,碳纤维加固布公司
  • 图论new
  • 斜率优化dp复习笔记