容斥原理 集合计数

bzoj2839: 集合计数(容斥原理) 传送门 题意简述:对于一个有N个元素的集合在其2^N个子集中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数。 思路:考虑枚举相交的是哪kkk个,有CnkC_n^kCnk​种方案,然后考虑剩下的可选可不选一共有22n−k2^{2^{n-k}}22n−k种选法,但是这样选出来的集合可能有其余的数相交,因此我们容斥掉多余的: ans=Cnk∗∑i=0n−kCni22n−k−ia... 阅读详情

问题 J: 集合计数
时间限制: 1 Sec 内存限制: 128 MB
题目描述
一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得
它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~)
输入
一行两个整数N,K
输出
一行为答案。
样例输入
3 2
样例输出
6
提示
【样例说明】
假设原集合为{A,B,C}
则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,ABC},{AB},{AC},{BC}
【数据说明】
对于100%的数据,1≤N≤1000000;0≤K≤N;

当前集合的数量为2^n个。然后我们固定k个元素为交集,也就是这k个元素必选,集合数量还剩下2^(n-k)个。选择方案总数就是2^(2^(n-k))。再枚举k,总方案C(n,k)*2^(2^(n-k)),很明显会出现重复的情况。以此类推,有k+1个交集的情况就是C(n,k+1)*2(2^(n-k-1))把k+1的剪掉,把k+2的再加回来。。。但是注意要枚举是哪一部分重了。
最终方案是 C(n,k)*2^(2^(n-k))-C(n,k+1)*2^(2^(n-k-1))*C(k+1,k)+…..
阶乘预处理,逆元预处理,2^(2^a)==2((2^a)%phi(mod)-phi(mod))。2的幂%phi(mod)预处理。。。。就会很快了。

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cstring>
#define p 1000000007
#define N 1000000
#define ll long long
using namespace std;
int n,k;
ll ans,a[N+5],b[N+5],xp[N+5];
ll cheng(ll x,ll m){llans=1;for(;m;m>>=1,x=x*x%p)if(m&1)ans=ans*x%p;return ans;}
ll C(int n,int m){return (a[n]*b[m]%p)*b[n-m]%p;}
void init()
{
    a[0]=b[0]=xp[0]=1;
    for(ll i=1;i<=n;i++)a[i]=a[i-1]*i%p;
    for(int i=1;i<=n-k;i++)xp[i]=xp[i-1]*2ll%(p-1);
    b[n]=cheng(a[n],p-2);
    for(ll i=n-1;i>=1;i--)b[i]=b[i+1]*(i+1)%p;
}
int main()
{
    scanf("%d%d",&n,&k);
    init();
    for(ll i=k,f=1;i<=n;i++,f=-f)
        ans=(ans+f*C(i,k)*cheng(2,xp[n-i])%p*C(n,i)%p+p)%p;
    printf("%lld\n",ans);
}
优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战 本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。 阅读详情

相关推荐

五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(一)引言和界面设计

引言 alphaGo击败围棋冠军李世石的新闻让我对棋类博弈产生了浓厚的兴趣,无奈本人不会围棋,但算是一个五子棋业余爱好者,于是乎希望通过实现一个五子棋ai来了解相关算法和知识。 五子棋在英文中又称Gobang,five-in-row,还有两个称呼:gomoku和renju(连珠)。我来简要介绍一下区别。由于五子棋已经被机器严格证明了是一种**“不公平”的游戏,先手黑子是绝对占优的,并且先手有必胜*...

livingsu的博客 1万+

集合计数-容斥原理

C. 集合计数 内存限制:128 MiB 时间限制:1000 ms 标准输入输出 题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~) 输入格式 一行两个整数N,K ...

weixin_30335575的博客 413

VulnHub靶机渗透实战(详细思路讲解)

使用kali中的namp工具扫描开放端口,这时kali会用一个端口号向目标主机的65535个端口发送TCP连接建立请求,回应了ack=1,syn=q的端口就是开放端口号,这里可以看到21,22,80,3306号端口是开放的。可以看到这里得到了很多哈希,带*号的是禁用的或者是空密码,将三个不带星号的密码复制下来,创建一个shell.txt文档,将三个密码复制进去。这里看到我们是没有成功进入这个网页的,应该是目录的问题,我们将目录修改一下,但是没有显示出来,可能是编码问题,再回到我们找到的源码。

weixin_65891791的博客 2547

【BZOJ2839】集合计数,容斥原理

.

xiaoyimi的博客 1811

在unity urp项目中 通过图片创建材质(透明光晕)

unity中通过图片创造材质(urp管道)

m0_49721415的博客 1541

示波器面板上的隐藏功能:如何利用BW Limit和EXT TRIG提升测量精度

本文深入探讨示波器面板上的隐藏功能BW Limit和EXT TRIG,揭示它们如何提升测量精度。通过带宽限制(BW Limit)有效滤除高频噪声,结合外部触发(EXT TRIG)确保稳定信号捕获,为电子测量提供专业解决方案。特别适用于开关电源、传感器信号等复杂场景的高精度测量需求。

weixin_30300225的博客 518

[bzoj2839]集合计数 题解 (组合数+容斥)

Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~) Input 一行两个整数N,K Output 一行为答案。 Sample Input 3 2 Sample Output 6 H...

weixin_30236595的博客 309

paddlehub无法安装,安装报错【Bug完美解决】

paddlehub无法安装,安装报错【Bug完美解决】 我们正在进行一个基于Python的项目开发,该项目需要集成PaddleHub,以利用其丰富的深度学习模型和工具。PaddleHub提供了一种简便的方式来使用预训练模型,以加速开发过程并提高模型效果。 现在paddlehub安装出现问题了,本文彻底解决paddlehub无法安装的问题。

一键难忘的博客 3390

集合计数(容斥原理)

题目大意 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007. 题解   首先很容易想到从n个元素中选出k个作为交集的方案数 C(n,k)   以下是错误思路,想偏了……(-_-)!     然后对于每个k在剩余的n-k个元素中任选元素,与k共同组成一个集...

weixin_30498921的博客 940

【AI黑话日日新】什么是AI云原生?

云原生赋能AI:利用容器、微服务、Serverless、DevOps等云原生技术,解决AI应用(尤其是大模型)在部署、扩展、运维、成本控制方面的痛点,让AI服务具备高可用、高性能、易运维、易扩展的特性AI赋能云原生:将AI技术(如智能调度、异常检测、自动优化)融入云基础设施管理,使云平台具备自我感知、自我优化、自我修复的能力,从"被动响应"升级为"主动适配"其本质是实现从""(AI运行在云上)到""(为AI量身打造的云)的根本性转变。

专注:太空算力、AI infra、异构调度、大模型成本工程 627

2026保姆级:1小时搞定C# OPC UA客户端开发——PLC与上位机全量数据交互零基础教程

本文介绍了使用C#开发OPC UA客户端的核心流程和关键代码实现。文章首先指出工业上位机开发中OPC UA的重要性,并针对新手常见问题提出了1小时掌握核心功能的解决方案。重点内容包括:选择官方.NET Standard库的优势、5分钟搭建开发环境的步骤、OPC UA客户端架构与通信流程的图解说明,以及完整的客户端基础类代码实现,涵盖了连接管理、证书配置、安全认证等关键功能。通过本文提供的代码模板,开发者可快速实现与PLC等工业设备的稳定数据交互。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 803

bzoj2839集合计数 容斥原理

题意:一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007。明显容斥啦。 应该是选择k个-选择k+1个+选择k+2….. 那么我们设f[i]表示已经选择k个作为交集,剩下n-k个如何选择的方案。 那么明显有f[i]=2^{2^(n-i)}-1,由于已经选择了k个,剩下n

老臣 445

YOLOv8集成CPCA(Combined Parallel Convolutional Attention)注意力机制模块YOLOv8深度教程

YOLOv8集成CPCA注意力模块教程摘要 本教程详细介绍了如何将YOLOv8 CPCA(Combined Parallel Convolutional Attention)注意力模块集成到YOLOv8目标检测框架中。CPCA模块结合了通道注意力和多尺度空间注意力机制,通过全局池化和双路径融合增强通道特征,并利用多尺度深度可分离卷积捕获空间上下文信息。YOLOv8 教程包含完整的实现步骤:创建CPCA模块代码、修改YOLOv8模型解析逻辑、编写自定义配置文件,YOLOv8YOLOv8YOLOv8YOLOv8

FJN110的博客 1620

【离散数学】集合论 第三章 集合与关系(3) 集合计数的加法原理、容斥原理

本文属于「离散数学」系列文章之一。这一系列着重于离散数学的学习和应用。由于内容随时可能发生更新变动,欢迎关注和收藏离散数学系列文章汇总目录一文以作备忘。此外,在本系列学习文章中,为了透彻理解数学知识,本人参考了诸多博客、教程、文档、书籍等资料。以下是本文的不完全参考目录,在后续学习中还会逐渐补充: (国外经典教材)离散数学及其应用 第七版 Discrete Mathematics and Its Applications 7th ,作者是 Kenneth H.Rosen ,袁崇义译,机械工业出版社 离散.

memcpy0的博客 2098

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[容斥原理] BZOJ 2839 集合计数

考虑容斥原理 计算交集大小至少为i的集合有多少种 首先需要选出ii个元素 方案为CinC_n^i 其它2n−i2^{n−i}个集合每个可选可不选 一共22n−i−12^{2^{n−i}}−1种 故答案为∑i=kn(−1)i−kCinCki(22n−i−1)\sum _{i=k}^n (−1)^{i−k} C_n^i C_i^k (2^{2^{n−i}}−1)#include<cstdio>

雯舞 769

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

BZOJ2839 集合计数 容斥原理 组合数学

题目链接 这个题是个权限题,我用同学的权限号交的。最近darkbzoj挂掉了,于是只能借权限号来交了。 题意: 一个有nnn个元素的集合有2n2^n2n个不同子集(包含空集),现在要在这2n2^n2n个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为kkk,求取法的方案数,答案模1000000007。n,k&lt;=1e6n,k&lt;=1e6n,k<=1e6 题...

forever_shi的博客 459

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【BZOJ】集合计数-组合数学/容斥原理/线性推逆元

传送门:bzoj2839集合计数 题意 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007。 数据范围 对于100%的数据,1≤N≤1000000;0≤K≤N; 题解 首先学一波线性推逆元。 设模为p。现在对于1,2,3…p-1求在...

远行客 350

集合计数 容斥原理

N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,ABC},{AB},{AC},{BC}则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,ABC},{AB},{AC},{BC}~~私货:~~虚拟歌姬会唱歌的有n个,会跳舞的有m个,不更新声库的有1个,问:有多少个虚拟歌姬?我们叫类似“{AB,ABC}”的集合大集合,类似“AB”这样的集合叫小集合。

Delat的博客 245

集合计数 (容斥原理)

心路: { 想了个思路打出来硬干掉了样例,然后发现是错的....当时直接崩了...烦躁滴很...其实这个思路和题解大方向上是一样的,想到了用至少含k个的方案数减去含k+1个的加上k+2的。。。 然后再想怎么求至少含k个的方案数想到了让集合含这k个数然后随机组就行,但没有想出来怎么求含这k个数的集合数,而且就算求出来发现不能直接对一种情况乘,有重复计算的... 想到这...再想...再想.....

weixin_30408309的博客 344

【BZOJ 2839】 2839: 集合计数 (容斥原理)

2839: 集合计数 Time Limit:10 SecMemory Limit:128 MBSubmit:399Solved:217 Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~) ...

weixin_30484247的博客 216

bzoj 2839 : 集合计数 容斥原理

因为要在n个里面选k个,所以我们先枚举选的是哪$k$个,方案数为$C_{n}^k$ 确定选哪k个之后就需要算出集合交集正为好这$k$个的方案数,考虑用容斥原理。 我们还剩下$n-k$个元素,交集至少为$k$的方案数为$2^{2^{n-k}}$。 相当于在仅有剩下$n-k$个元素的集合里随便选,最后再往每个集合里塞进这$k$个元素。 然后就是很简单的容斥了。 减去交集至少为k加上其他...

weixin_30885111的博客 112

BZOJ 2839 集合计数 容斥原理

题目大意:给定n个元素,求交集大小为k的集合的集合共有多少种 考虑容斥原理 计算交集大小至少为i的集合有多少种 首先需要选出i个元素 方案为C(n,i) 其它2^(n-i)个集合每个可选可不选 一共(2^[2^(n-i)]-1)种 故答案为Σ[k #include #include #include #include #define M 1001001 #define MOD 1

世界 1933

集合计数-(容斥原理+组合数求模)

一个有N个元素的集合有2^N 个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。 数据规模和约定 1 < = K < = N < = 10 ^ 6。 输入 输入一行两个整数N,K。 输出 输出一个整数表示答案。 样例输入 3 2 样例输出 6 容斥原理公式: 在这里我们可以写成: 空集为空集的方案数。 最后得到: // 容斥原理+组合数取模 // 集合计数 /* 网上思路

rwrsgg的博客 1842

集合计数 :容斥原理

zkt大神的同题题解: https://www.cnblogs.com/hzoi-DeepinC/articles/11102979.html Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~) Inpu...

weixin_30487317的博客 304

BZOJ 2839: 集合计数 容斥原理 组合数学

2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 521  Solved: 285 [Submit][Status][Discuss] Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案

BlackJack 749
上一篇: DP [Sdoi2010]地精部落
下一篇: 分层背包 [HNOI2007]梦幻岛宝珠
QTY_
博客等级 码龄9年 13粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值