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

洛谷题单指南-组合数学与计数-P3214 [HNOI2011] 卡农

原题链接:https://www.luogu.com.cn/problem/P3214

题意解读:从数字1~n组成的所有非空子集中,选m个子集组成集合T,要求集合T里所有子集的数字都出现偶数次,请所有T的方案数。

解题思路:

数字1~n组成的非空子集一共有2n-1个(每个数字有选或不选两种,排除全不选)

如果不考虑数字出现偶数次的限制,总的方案数为C(2n-1,m),关键要思考如何排除掉出现偶数次的情况。

这里借助于递推:

设f[i]表示选了前i个子集且所有数都出现偶数次的方案数

考虑选第i个子集的时候,方案是确定的,因为前i-1如果已经选好,所有数字的奇偶性是确定的,如果不考虑奇偶性,选前i-1个子集的所有方案数是C(2n-1,i-1)

选第i个子集有两种不合法的可能:

1、选空集合,前i-1个子集中数字都已经出现偶数次

由于C(2n-1,i-1)里包括了选空集的情况,前i-1个集合数字是偶数个的时候,第i个为空集,一共有f[i-1]种

2、第i个子集与前i-1个子集有重复的情况

首先,有i-2个子集是不重复的,还有2个子集重复,重复的子集有2n-1-(i-2)=2n-i+1种选择,i-2个子集是合法的方案数是f[i-2],因此第i个子集与前i-1个子集有重复的情况一共有f[i-2]*(2n-i+1)种

这时,得到选前i个子集的总方案数是C(2n-1,i-1)-f[i-1]-f[i-2]*(2n-i+1)

去掉不合法的情况之后,对于i个子集都确定的情况下,第i个子集一共有i种选法,方案数里已经包括了这i种选法,因此最终:

f[i] = ( C(2n-1,i-1)-f[i-1]-f[i-2]*(2n-i+1) ) / i

C(2n-1,i-1)可以通过展开后阶乘逆元在递推中来计算,C(2n-1,i-1) = (2n-1)*...*(2n-i+1) / (i-1)!

初始时f[0]=f[1]=f[2]=0,从i=3开始求,C(2n-1,3-1) = (2n-1)*...*(2n-2) / 2!,

下一次递推C(2n-1,4-1) = C(2n-1,3-1) * (2n-3) / 3,因此下一次C(2n-1,i-1) 要*(2n-i) / i

除以i变为乘以i模mod的逆元。

100分代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;const int N = 1000005, MOD =  1e8 + 7;
LL f[N], C;
LL n, m;LL ksm(LL a, LL b, LL mod)
{LL res = 1;while(b){if(b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}int main()
{cin >> n >> m;//C(2^n-1,3-1) = (2^n-1)*...*(2^n-2) / 2!LL t = ksm(2, n, MOD);C = (t - 1) * (t - 2) % MOD * ksm(2, MOD - 2, MOD) % MOD; for(int i = 3; i <= m; i++){//f[i] = ( C(2^n-1,i-1)-f[i-1]-f[i-2]*(2^n-i+1) ) / if[i] = C - f[i - 1] - f[i - 2] * (t - i + 1) % MOD;f[i] = (f[i] % MOD + MOD) % MOD * ksm(i, MOD - 2, MOD) % MOD;//C = C * (2^n-i+1) / iC = C * (t - i) % MOD * ksm(i, MOD - 2, MOD) % MOD;}cout << f[m];return 0;
}

 

http://www.jsqmd.com/news/56939/

相关文章:

  • 2025环保艺术漆头部品牌TOP5权威推荐:剖析艺术漆市场现
  • 2025年十大比较好的钢结构楼梯厂家排行榜,推荐钢结构楼梯工
  • 2025烤蓝铁皮打包带源头厂家TOP5权威推荐:优质生产商甄
  • 钢结构楼梯厂家TOP5权威推荐:知名厂家深度测评,甄选不错工
  • Win11 + Ubuntu 双系统安装流程(暗夜精灵) - Daniel
  • import加载包和模块的机制原理
  • 模型推理如何利用非前缀缓存 - 详解
  • 区域选择组件(PC)
  • Wyrm + MNE 工具链完整介绍
  • CF767E-Change-free
  • 哈尔滨装修安装工程企业TOP5权威推荐:助力洁净空间品质升级
  • 炼油设备厂家TOP5权威推荐:甄选靠谱大型厂家,赋能工业固废
  • WMS 仓库管理系统怎么选择?
  • VW/Audi MQB All Keys Lost: Hassle-Free SYNC Data Calculations with Xhorse VVDI Autel
  • 快捷键和Dos命令
  • 2025年哈尔滨十大有名的装修安装工程公司推荐,口碑不错的装
  • 2025年度全屋定制品牌生产厂哪家更值得选?5大实力厂商排行
  • 列表弹窗实现方案整理
  • 硬盘检测修复工具!实时监测硬盘健康度、温度、还能修复扇区!
  • 【日记】第一次约拍别人呢(1165 字)
  • 02.Class对象的理解
  • 2025年12月楼梯厂家最新十大品牌推荐,技术实力与市场口碑深度解析,家装定制品牌榜及选择指南,更能一站式搞定木门/衣柜/橱柜/护墙板
  • 添加断言
  • 2025哈尔滨净化改造工程TOP5权威推荐:甄选企业守护洁净
  • 全屋定制制造厂TOP5权威推荐:售后与品质双优之选,破解行业
  • Windows 11网络共享文件夹无法访问
  • 2025 TOPDON ArtiDiag 900 Lite 8 Scan Tool: Full System Diagnostics 8 Resets for EU/US Cars
  • 2025年黑龙江十大改造工程专业公司推荐:改造工程公司
  • C#AI系列(3):31mb单文件exe实现姿态检测-将Yolo装进口袋
  • 2025年全屋定制品牌制造企业选择哪家好?全屋定制品牌生产厂