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

*题解:P6442 [COCI 2011/2012 #6] KOŠARE

题目链接

解析

题目等价于给定 \(n\) 个集合,求选出来的集合的并等于全集的方案数。

考虑容斥。记 \(P_i\) 表示第 \(i\) 个元素在最终集合里的选法,那么要求即为 \(\left| \bigcap_{i=1}^{m}P_i\right|\)。记 \(Q_i\) 表示第 \(i\) 个元素在最终集合里的选法,那么有 \(\left| \bigcap_{i=1}^{m}P_i\right|=\left| U\right| - \left| \bigcup_{i=1}^{m}Q_i\right|\),其中 $ \left| \bigcup_{i=1}^{m}Q_i\right|$ 代表至少有一个元素不在最终集合里的选法个数, \(U\) 为全集

问题变为求 $ \left| \bigcup_{i=1}^{m}Q_i\right|$。由容斥原理,我们有:

\[\left| \bigcup_{i=1}^{m}Q_i\right| =\sum_{\emptyset \not=S \subseteq [1,m]\cap \mathbb{Z}}(-1)^{\lvert S\rvert - 1}\left| \bigcap_{j\in S}Q_j\right| \]

\(f_S=\left| \bigcap_{j\in S} Q_j\right|\) 表示选出来的集合并中不含 \(S\) 中元素的方案数。并中不含 \(S\) 中元素又意味着补集的交中含有所有 \(S\) 中元素。设 \(g_S\) 表示补集中含有所有 \(S\) 中元素的集合个数,那么 \(f_S = 2^{g_S}\)

对于 \(g_S\),有 \(g_S=\sum_{S\subseteq T} h_T\),其中 \(h_T\) 表示补集为 \(T\) 的集合个数。使用 SOSDP 求解,时间复杂度 \(O(m2^m)\)

事实上,我们有 \(\bigcap_{i \in \emptyset}Q_i=U\),可以理解为限制集合为空所以没有任何限制,所以:

\[\sum_{\emptyset \not=S \subseteq [1,m]\cap \mathbb{Z}}(-1)^{\lvert S\rvert - 1}\left| \bigcap_{j\in S}Q_j\right|=\sum_{S \subseteq [1,m]\cap \mathbb{Z}}(-1)^{\lvert S\rvert - 1}\left| \bigcap_{j\in S}Q_j\right|+\left| U \right| \]

于是:

\[\begin{aligned} \left| U\right| - \left| \bigcup_{i=1}^{m}Q_i\right| &= \left| U\right| - (\sum_{S \subseteq [1,m]\cap \mathbb{Z}}(-1)^{\lvert S\rvert - 1}\left| \bigcap_{j\in S}Q_j\right|+\left| U \right|)\\ &=- (\sum_{S \subseteq [1,m]\cap \mathbb{Z}}(-1)^{\lvert S\rvert - 1}\left| \bigcap_{j\in S}Q_j\right|)\\ &= \sum_{S \subseteq [1,m]\cap \mathbb{Z}}(-1)^{\lvert S\rvert}\left| \bigcap_{j\in S}Q_j\right| \end{aligned} \]

由此可以衍生出不同的实现方法。

代码

/*
此代码根据最后推出的式子实现。
*/
#include <bits/stdc++.h>
#define eps 0.0000000001
#define ls(x) ((x) << 1)
#define rs(x) (((x) << 1) | 1)
//#define mid ((l + r) >> 1)
using namespace std;
typedef long long ll;
typedef unsigned ui;
typedef pair<int,int> pii;
const int N = (1 << 20) + 5,M = 15,P = 2000000,mod = 1e9 + 7,mod2 = 1e9 + 7,b1 = 131,b2 = 13331;
int f[N],g[N];
int mi2[N];
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);mi2[0] = 1;for(int i=1;i<N;i++){mi2[i] = mi2[i - 1] * 2ll % mod;}int n,m;cin>>n>>m;for(int i=1;i<=n;i++){int k;cin>>k;int y = (1 << m) - 1;for(int j=1;j<=k;j++){int x;cin>>x;x--;y ^= (1 << x);}g[y]++;}for(int i=0;i<m;i++){for(int j=0;j<(1 << m);j++){if(!(j & (1 << i))){g[j] += g[j ^ (1 << i)];}}}int res = 0;for(int i=0;i<(1 << m);i++){f[i] = mi2[g[i]];int p = __builtin_popcount(i) % 2 == 0 ? 1 : -1;res = (res + mod + 1ll * p * f[i]) % mod;}cout<<res;return 0;
}
http://www.jsqmd.com/news/1014867/

相关文章:

  • 终极指南:如何使用WuMgr完全掌控Windows系统更新
  • 5分钟快速解决TranslucentTB的VCLibs缺失问题:Windows任务栏透明美化终极指南
  • 如何用MAA智能助手解放你的《明日方舟》日常:5个核心功能详解
  • 如何快速掌握LibreDWG:免费DWG文件转换的终极指南
  • AMD Ryzen系统调试工具SMUDebugTool深度解密:硬件级精准控制技术实现
  • Anaconda3安装路径选C盘还是D盘?实测不同盘符对性能和包管理的影响
  • 除了Confluence和语雀,企业知识库还有第三种选择
  • 2026北京企业法律顾问避坑指南:5家靠谱专业机构推荐 - 本地品牌推荐
  • 微信聊天记录永久备份终极指南:WeChatExporter开源工具深度解析
  • 虚拟测绘实战:用SF600+RTK手簿完成一次完整的无人机倾斜摄影建模前期工作
  • 2026广州电商财税合规公司排行:标杆服务能力实测对比 - 互联网科技品牌测评
  • aitextgen:GPT-2 快速部署与轻量微调实战指南
  • 告别重复操作!StarRailCopilot让你轻松玩转《崩坏:星穹铁道》
  • 2026广州电商财税合规公司名录:3家标杆服务商解析 - 互联网科技品牌测评
  • 3分钟免费解锁IDM完整版:开源激活脚本终极指南
  • PotatoNV深度实战:华为麒麟设备Bootloader解锁完全解决方案
  • 3分钟快速上手:终极中文文献管理插件Jasminum完全指南
  • Rust 在 Windows 下选 MSVC 还是 MinGW?一个选择帮你避开 90% 的编译坑
  • 2026人力资源全链条咨询机构评测:从战略解码到国企改革的一体化解决方案 - 互联网科技品牌测评
  • 终极LRC歌词批量下载工具:10分钟搞定数千首离线音乐歌词同步
  • 大模型全套核心技术汇总(大白话比喻版,承接前文蒸馏轻量化博客)
  • 从登录到调用:手把手用Flask和JWT实现一个完整的API鉴权流程(附代码)
  • CANN AMCT量化压缩工具包深度技术解析:PTQ量化算法与昇腾NPU低比特运算的精度-性能权衡全景解读
  • 从DCNv1到v3:手把手带你用PyTorch复现可变形卷积的演进(含调参避坑指南)
  • Transformer凭啥取代RNN?从哈工大NLP期末考题,拆解自注意力机制的实战优势
  • 2026年6月南京热风循环烘箱厂家:合规性与适配性实测对比 - 奔跑123
  • 从PyTorch转战Rust?tch-rs、Candle、Burn、DFDX保姆级上手体验对比
  • 如何轻松下载B站视频:从大会员4K到充电专属内容的完整指南
  • GHelper终极指南:三步摆脱臃肿控制软件,轻松掌控华硕笔记本性能
  • 2026年流量计厂家推荐排行榜:电磁/涡街/涡轮/智能/防爆/污水/化工流量计公司精选,技术实力与行业口碑深度盘点 - 品牌发掘