#容斥,组合计数#洛谷 3214 卡农
题目
在集合S=[1∼n]S=[1\sim n]S=[1∼n]中选出mmm个子集,满足三点性质:
- 所有选出的mmm个子集都不能为空。
- 所有选出的mmm个子集中,不能存在两个完全一样的集合。
- 所有选出的mmm个子集中,1到nnn每个元素出现的次数必须是偶数。
问有多少种不同的方法,两个子集 a 和 b 同种当且仅当将 a 的子集重新排列后可以得到 b
分析
首先作为一道黑题,它还是具有它的难度的,因为是真的恶心。
首先不同就是个幌子,只要答案除以m!m!m!的阶乘就可以了。
设dp[i]dp[i]dp[i]表示前iii个合法集合的方法数
第二,考虑容斥,若是偶数,那么第iii个是唯一的,也就是前i−1i-1i−1个出现奇数次的,所以总共方案是P2n−1i−1P^{i-1}_{2^n-1}P2n−1i−1
然后,非空,那么当第iii个集合为空时,那么方案数是dp[i−1]dp[i-1]dp[i−1]
接着不能存在完全一样的集合,若jjj与iii重复,那么剩下的i−2i-2i−2个子集是合法方案,jjj有i−1i-1i−1种取值,第jjj个子集可以有2n−1−(i−2)2^n-1-(i-2)2n−1−(i−2)种方案,所以也就是dp[i−2]×(i−1)×(2n−i+1)dp[i-2]\times (i-1)\times (2^n-i+1)dp[i−2]×(i−1)×(2n−i+1)
综上所述,dp[i]=P2n−1i−1−dp[i−1]−dp[i−2]×(i−1)×(2n−i+1)dp[i]=P^{i-1}_{2^n-1}-dp[i-1]-dp[i-2]\times (i-1)\times (2^n-i+1)dp[i]=P2n−1i−1−dp[i−1]−dp[i−2]×(i−1)×(2n−i+1)
dp[0]=1,dp[1]=0dp[0]=1,dp[1]=0dp[0]=1,dp[1]=0(是真的骚)
代码
#include <cstdio>
#define rr register
using namespace std;
typedef long long ll;
const ll mod=100000007;
inline ll ksm(ll x,ll y){rr ll ans=1;for (;y;y>>=1,x=x*x%mod)if (y&1) ans=ans*x%mod;return ans;
}
signed main(){rr int n,m; rr ll dp=0;scanf("%d%d",&n,&m);rr ll mi=ksm(2,n),dp1=0,dp2=1,c=1,jc=1;for (rr int i=2;i<=m;++i){rr ll t=mi-i+1+mod; c=c*t%mod,jc=jc*i%mod;dp=((c-dp1-dp2*(i-1)%mod*t%mod)+mod)%mod,dp2=dp1,dp1=dp;}return !printf("%lld",dp*ksm(jc,mod-2)%mod);
}
#容斥,组合计数#洛谷 3214 卡农相关推荐
- 信息学奥赛一本通 1316:【例4.6】数的计数(Noip2001) | 1914:【01NOIP普及组】数的计数 | 洛谷 P1028 [NOIP2001 普及组] 数的计算
[题目链接] ybt 1316:[例4.6]数的计数(Noip2001) ybt 1914:[01NOIP普及组]数的计数 洛谷 P1028 [NOIP2001 普及组] 数的计算 [题目考点] 1. ...
- HDU 6143 Killer Names(容斥+组合)
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...
- 数论三之排列组合Ⅱ——Virus Tree 2,RGB Coloring,123 Triangle,排列计数,排队,卡农
丝且人一口 Virus Tree 2 description solution code RGB Coloring description solution code 123 Triangle des ...
- 拓扑排序——最大食物链计数(洛谷 P4017)
题目选自洛谷P4017 这里具体讲一下为什么要用拓扑排序(思维过程): 1.这是一道图论题: 2.不是求最短路: 3.根据提示"最左端是不会捕食其他生物的生产者"可以想到,我们要入 ...
- P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...
- 合理抽象灵活运用排列组合(洛谷P2181题题解,Java语言描述)
题目要求 P2181题目链接 分析 其实,本题是一个数学题... 首先由题意得,不会有三条对角线交于一点,所以过某一个交点有且只能有2条对角线. 而这两条对角线实质上是确定了4个顶点(也可以看做是一个 ...
- 洛谷 最大食物链计数 python题解
题目:P4017 最大食物链计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 给你一个食物网,你要求出这个食物网中最大食物链的数量. (这里的"最大食物链&q ...
- 洛谷--橙色百道DP总结
最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...
- 洛谷大起义胜利的经验总结
UPD1(2019.7.11):chen_zhe解除了对我的禁言,但仍保持大脑皮层对刷题重心转到LibreOJ的决策,50年不变. 2019-07-09 9:54 结束黑暗无光的\(luogu\)统治 ...
最新文章
- asp.net 连接access数据库方法
- linux虚拟机ip地址更改
- c语言程序设计教程岳莉答案,C++程序设计教程
- Envoy实现.NET架构的网关(一)静态配置与文件动态配置
- 以太网和路由设置,内网和外网同时上
- iptables规则书写总结
- Python机器学习:PCA与梯度上升:04求数据的前n个主成分
- 微信公众平台开发(一) 配置接口
- 2011年3月四级网络工程师笔试试卷 解答思路
- 《算法分析与设计》课程任务
- 单片机关于protues中数码管的显示
- C语言match函数的定义与用法,Match函数的基本用法
- 如何在腾讯云服务器部署web项目
- css flex布局iOS8兼容性问题
- 斐讯音箱控制扫地机器人_斐讯大能X3扫地机器人首批测试,这回真没花一分钱!...
- 利用非约束性委派+Spooler打印机服务 制作黄金票据攻击域控
- 为什么很多计算机专业大学生毕业后还会参加培训?
- vue-devtools安装教程 附各种常见错误处理(图标不显示 图标显示控制台没用Vue选项卡)
- Python数据结构11:树的实现,树的应用,前中后序遍历,二叉查找树BST,平衡二叉树AVL树,哈夫曼树和哈夫曼编码
- tkinter之字体(无废话的那种)
热门文章
- Java web学习记载
- 设计求任意两个整数和的web程序,用户通过提交页面(input.jsp)输入两个整数,并提交给一个(sum.jsp)程序
- Django MVT模型详解--高级
- 在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
- 开源课程管理系统(CMS):Moodle
- Scrapy+selenimu分析《海王》到底有多好看
- DAPM-widget
- API标准化的重要性
- c语言函数嵌套是啥,函数的嵌套是什么 函数的嵌套是什么意思
- 程序员专用经典语录—看完笑一阵可以,千万不要死循环哦!