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

2024 CCPC Final F

F. Witnessing the Miracle / 见证奇迹

动态规划。

打表发现当一个被拿走的磁铁集合确定之后,未被拿走的磁铁的方向和距离可以由它左边被拿走的磁铁数量确定,因此,拿走磁铁的先后顺序不影响最终局面的状态,即从 \(S\) 中拿走不同集合的磁铁所对应的状态也是不同的。

考虑从左往右 \(dp\),设 \(dp_{i,j}\) 表示为 \(S\) 中确定了前 \(i\) 个和 \(T\) 中前 \(j\) 个位置的方案数。

由于磁铁可以往左往右溢出,此时溢出的位置也是合法的,可以将 \(T\) 前后扩 \(n\)\(0\)

因为可以从右边拿走磁铁使得左边的磁铁左移 \(k\) 位,所以初始化时需初始 \(dp_{0,n-k}\)\(1\),最终答案也是同理,最右边的可以被右移 \(k\) 位,则答案为 \(dp_{n,2n+k}\)\(s_{i-1}\) 保留 \(0/1\) 时有转移:

\[dp[i][j] = dp[i][j] + dp[i-1][j-1]\quad \text{ if } s_{i-1} \ne x \land t_{j-1}\ne x,x\in\{0,1\} \]

\(s_{i-1}\)\(1\) 但不保留时,有转移:

\[dp[i][j] = dp[i][j] + dp[i-1][j-3]\quad \text{ if } t_{j-1}=t_{j-2}=t_{j-3}=0 \]

代码中 Z 类型为取模类。

点击查看代码
using Z = ModInt<MOD[0]>;void solve() {int n, k;std::cin >> n >> k;std::string s, t;std::cin >> s >> t;t = std::string(n, '0') + t + std::string(n, '0');const int lim = 3 * n;std::vector<Z> dp(lim + 1);dp[n - k] = 1;for(int i = 0; i < n; i += 1) {std::vector<Z> ndp(lim + 1);for(int j = 1; j < lim; j += 1) {if(t[j - 1] != '1' && s[i] != '1') {ndp[j] += dp[j - 1];}if(s[i] != '0') {if(t[j - 1] != '0') {ndp[j] += dp[j - 1];}if(j >= 3 && t[j - 1] != '1' && t[j - 2] != '1' && t[j - 3] != '1') {ndp[j] += dp[j - 3];}}}dp = std::move(ndp);}std::cout << dp[2 * n + k] << "\n";}
int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t;std::cin >> t;while (t--) {solve();}return 0;
}
http://www.gsyq.cn/news/23190.html

相关文章:

  • ubuntu常用技巧
  • 字典树 Trie 乱讲
  • 申威(sw_64)架构下如何安装java-1.8.0-swjdk的rpm包?​
  • 实用指南:计算机毕设java基于mybatis的医用器械管理系统 基于 SSM+JavaWeb 的医用器械全流程管理平台 Java+MySQL 的医疗物资一体化系统
  • ffmpeg使用
  • 2025.10.17总结 - A
  • Ubuntu创建python桌面图标
  • Nimble:让SwiftObjective-C测试变得更优雅的匹配库 - 指南
  • 【Linux】基础 I/O - 指南
  • DIVCNT
  • 详细介绍:CI/CD流水线优化:GitLab CI镜像构建加速实战​
  • 最新版Origin 2025b安装包下载及详细安装教程,附永久免费中文汉化破解版Origin安装包
  • Unity3D中定义全局宏(不同于在unity设置中的)
  • HyperWorks许可状态监控工具
  • 从创作到分析:2025 公众号排版工具全维度测评榜单
  • 2025 年无锡专线物流公司最新推荐排行榜:聚焦个性化运输解决方案,精选优质服务商往返无锡/冷链无锡/公路无锡/大件无锡专线物流公司推荐
  • 第三次课动手动脑合集
  • 2025 年火山石厂家最新推荐排行榜:聚焦自有矿藏与全自动生产,涵盖滤料填料等多品类企业权威指南人工湿地填料/人工湿地滤料/黑色/红色火山石厂家推荐
  • mysql5.7.44升级到8.0.34 mysql跨版本升级实战操作 windows环境
  • 【SPIE出版、往届已检索】第十届能源系统、电气与电力国际学术会议 (ESEP 2025)
  • 2025-10-17
  • 有趣评测小程序系统:开启视频与答题变现新创业风口
  • 设备租赁归还小程序系统:免人工化租赁管理解决方案
  • Navcat如何上传数据大的sql文件?
  • 使用Scalar.AspNetCore来管理你的OpenApi
  • 设计社会意识算法的三大关键问题
  • 【转】[C#] 项目里的配置文件与选项对比
  • 深入解析米尔全志T536核心板的实时性技术突破
  • 2025年西安买房终极指南:十大热门楼盘排名揭秘
  • Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10