尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

「CF1210F2-Marek and Matching (hard version)」题解

「CF1210F2-Marek and Matching (hard version)」题解
📅 发布时间:2026/6/18 19:33:00
题解记录

F2. Marek and Matching (hard version)

sol

是一个 \(O(3^{2n})\) 的做法。

考虑霍尔定理,完美匹配要求任意左部点集合 \(S\) 满足 \(|S|\le |N(S)|\),\(N(S)\) 为与 \(S\) 相连的右部点集合。

考虑容斥。考虑对每个不合法状态都设计一个唯一的代表元,以方便容斥。设 \(f(S,T)\) 表示 \(S,T\) 可以完美匹配的概率,那么就只需要用 \(T=N(S)\) 的概率减去其中存在 \(S'\subset S,T'\subset T\land T'=N(S)\) 满足 \(|S'|>|T'|\) 的概率即可。

考虑对每一种不合法状态确定一对满足上述不合法条件的 \(S,T\) 作为代表元,这样容斥时可以直接枚举代表元转移。我们找 \(|S|-|T|\) 最大的一对 \(S,T\) 使得其余部分可以完美匹配即可,如果有多种,选择 \(|S|\) 最小的。这样的一对 \(S,T\) 必然是唯一的。有证明:

假如存在两对 \(S,T\) 上面两个条件均相等,分类讨论:

  1. 若 \(S_1,S_2\) 无交,那么 \(S_1\cup S_2,T1\cup T2\) 显然不劣。
  2. 若 \(S_1,S_2\) 有交,那么 \(S_1\cap S_2\) 或 \(S_1\cup S_2\) 不劣。因为 \(|S_1|-|T_1|+|S_2|-|T_2|\\=|S1\cup S2|-|T_1\cup T_2|+|S_1\cap S_2|-|N(S_1\cap S_2)|\\\le|S1\cup S2|-|T_1\cup T_2|+|S_1\cap S_2|-|T1\cap T2|\) 如果取等那么取交 \(|S|\) 更小,否则必有一个更优。

因此考虑设 \(g(S,T)\) 为只考虑 \(S,T\) 导出子图时 \(S,T\) 为代表元的情况,容斥掉存在更小代表元的情况即可。注意仍需满足 \(T=N(S)\)。记 \(c(S,T)\) 为 \(T=N(S)\) 的概率,\(d(S,T)\) 为 \(S,T\) 无连边的概率。有转移式:

\[g(S,T)=c(S,T)-\sum_{S'\subset S}\sum_{T'\subset T}g(S',T')d(S',T\setminus T')f(S\setminus S',T\setminus T')[|S'|-|T'|\ge |S|-|T|] \]

\(d(S',T\setminus T')\) 是因为需要保证 \(T=N(S)\),\(f(S\setminus S',T\setminus T')\) 是因为其余部分应当可以完美匹配,\([|S'|-|T'|\ge |S|-|T|]\) 是因为要满足上述条件。

然后考虑转移 \(f\),基本同理,就不额外解释各项意义了:

\[f(S,T)=c(S,T)-\sum_{S'\subset S}\sum_{T'\subset T}g(S',T')d(S',T\setminus T')f(S\setminus S',T\setminus T') \]

code

int n;
mint p[N][N],c[1<<N][1<<N],d[1<<N][1<<N],f[1<<N][1<<N],g[1<<N][1<<N];
#define popc(s) __builtin_popcount(s)inline void Main(){cin>>n;repl(i,0,n)repl(j,0,n)cin>>p[i][j],p[i][j]/=100;repl(s,0,1<<n)repl(t,0,1<<n){c[s][t]=d[s][t]=1;if(!s)continue;repl(j,0,n)if(t>>j&1){mint v=1;repl(i,0,n)if(s>>i&1)v*=1-p[i][j];c[s][t]*=1-v,d[s][t]*=v;}}repl(s,0,1<<n)repl(t,0,1<<n){if(popc(s)<=popc(t)){f[s][t]=c[s][t];for(int ss=s-1&s;~ss;ss=ss?ss-1&s:-1)for(int tt=t-1&t;~tt;tt=tt?tt-1&t:-1)f[s][t]-=g[ss][tt]*d[ss][t^tt]*f[s^ss][t^tt];}else{g[s][t]=c[s][t];for(int ss=s-1&s;~ss;ss=ss?ss-1&s:-1)for(int tt=t-1&t;~tt;tt=tt?tt-1&t:-1)if(popc(ss)-popc(tt)>=popc(s)-popc(t))g[s][t]-=g[ss][tt]*d[ss][t^tt]*f[s^ss][t^tt];}}put(f[(1<<n)-1][(1<<n)-1]);
}

相关新闻

  • 详细介绍:【数据结构】考研算法精讲:分块查找的深度剖析 | 从“块内无序、块间有序”思想到ASL性能最优解
  • ICPC2025西安 游记(VP)
  • 2025年11月汽车水泵轴承源头厂家综合评测与选择指南:徐州优力同创领跑行业

最新新闻

  • 传统观念分散持仓越多风险越低,编程逐步增加持仓个股数量,测算组合波动率拐点,找到最优分散上限。
  • 2026知名GEO服务商大盘点!不同场景选型攻略全覆盖 - 品牌测评鉴赏家
  • 如何快速掌握SuperCom串口调试工具:从零开始的终极使用指南
  • PyCaret低代码实现房价预测:从数据准备到模型上线全链路
  • 【Springboot毕设全套源码+文档】基于springboot的智慧仓库(丰富项目+远程调试+讲解+定制)
  • 2026年6月PE排水管企业推荐指南 - 多才菠萝

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号