BZOJ2339/LG3214 「HNOI2011」 卡农 组合数学
问题描述
本题的一些心得
对于这种无序集合计数类问题,可以通过对方案数除以某个数的阶乘,使得无序化变为有序化。
设计DP方程时候,应该先有序的列出状态转移方程每一项的来源,并一项项推导式子,可以使得做题过程更加有条理。
一个拥有良好科学素养的人,一定是有条理的 ——李理
题解
对于本题,发现如果最后对答案除以 \(m!\),则可以使得集合 「有序化」 。
对于一个满足要求的方案,必须满足以下 \(3\) 个条件:
没有互相重复的集合
没有空集
集合中的每个元素都必须出现偶数次
设 \(dp[i]\) 代表满足以上三个限制条件时的方案数。
对于三个限制条件分开考虑。
首先,对于条件 \(3\) ,只要知道 \(dp[1],dp[2],\cdot,dp[i-1]\) ,就可以推出 \(dp[n]=A_{2^n-1}^{i-1}\) 。
对于条件 \(1\) ,假设集合 \(j\) 与集合 \(i\) 重复,则 \(j\) 有 \(i-1\) 种取法,\(i\) 有 \(2^n-1-(i-2)=2^n-i+1\) 种取法,本处去掉的贡献为 \(dp[i-2] \times (n-1) \times (2^n-i+1)\) 。
对于条件 \(2\) ,如果有空集,则前 \(i-1\) 个符合条件,去掉贡献 \(dp[i-1]\) 。
\(\mathrm{Code}\)
调试中,码力不行,甘拜下风
BZOJ2339/LG3214 「HNOI2011」 卡农 组合数学的更多相关文章
- 【BZOJ2339】【HNOI2011】卡农
题解: 首先用二进制表示每个音阶是否使用,那么共有$2^{n}-1$(空集不可行)种片段,用$a_{i}$来表示每个片段,问题就是求满足$a_{1}\left (xor\right)a_{2}\lef ...
- BZOJ 2339 【HNOI2011】 卡农
题目链接:卡农 听说这道题是经典题? 首先明确一下题意(我在这里纠结了好久):有\(n\)个数,要求你选出\(m\)个不同的子集,使得每个数都出现了偶数次.无先后顺序. 这道题就是一道数学题.显然我们 ...
- 【HNOI2011】卡农
题面 题解 将无序化为有序,最后答案除以$m!$. 设$f[i]$表示选出了$i$个子集,并且满足所有的限制的方案数. 因为转移困难,所以考虑容斥 限制了每个数的出现次数为偶数,所以如果前$i - 1 ...
- [BZOJ2339][HNOI2011]卡农
[BZOJ2339][HNOI2011]卡农 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见& ...
- 【BZOJ2339】[HNOI2011]卡农 组合数+容斥
[BZOJ2339][HNOI2011]卡农 题解:虽然集合具有无序性,但是为了方便,我们先考虑有序的情况,最后将答案除以m!即可. 考虑DP.如果我们已经知道了前m-1个集合,那么第m个集合已经是确 ...
- bzoj2339[HNOI2011]卡农 dp+容斥
2339: [HNOI2011]卡农 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 842 Solved: 510[Submit][Status][ ...
- BZOJ2339[HNOI2011]卡农——递推+组合数
题目链接: [HNOI2011]卡农 题目要求从$S=\{1,2,3……n\}$中选出$m$个子集满足以下三个条件: 1.不能选空集 2.不能选相同的两个子集 3.每种元素出现次数必须为偶数次 我们考 ...
- 「TJOI2015」组合数学 解题报告
「TJOI2015」组合数学 这不是个贪心吗? 怎么都最小链覆盖=最大点独立集去了 注意到一个点出度最多只有2,可以贪心一下出度的去向 按读入顺序处理就可以,维护一个\(res_i\)数组,表示上一行 ...
- 【BZOJ2339】卡农(递推,容斥)
[BZOJ2339]卡农(递推,容斥) 题面 BZOJ 题解 先简化一下题意: 在\([1,2^n-1]\)中选择不重复的\(m\)个数,使得他们异或和为\(0\)的方案数. 我们设\(f[i]\)表 ...
随机推荐
- MySQL的多表联查
1.内连接 规则:返回两个表的公共记录 语法: -- 语法一 select * from 表1 inner join 表2 on 表1.公共字段=表2.公共字段 -- 语法 ...
- Visual Studio 开发(三):Visual Studio 使用时常见问题解决方案
一.Error LNK2019: 无法解析的外部符号 此问题应该是Visual Studio的初学者最常碰到的问题,也是相对来说很让人头疼的问题. 注:Error LNK2019 问题在VC 6.0 ...
- oracle 查询两个字段值相同的记录
select A.* from tb_mend_enrol A, (select A.Typeid, A.address from tb_mend_enrol A group by A.Typeid, ...
- 2019/12/10学习内容摘要(Linux文件和目录管理)
1.绝对路径和相对路径 *绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql *相对路径:路径的写法不是由根目录 / 写起的,例如 首先用户进入到 /home,然后 ...
- Linux系统学习 十五、VSFTP服务—匿名用户访问(不推荐使用,不安全)
匿名用户访问 基本配置: anonymous_enable #允许匿名用户访问 anon_upload_enable #允许匿名用户上传 anon_mkdir_write ...
- 【西北师大-2108Java】第十二次作业成绩汇总
[西北师大-2108Java]第十二次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第14周学习指导及要求 实验目的与要求 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本 ...
- 10. Go 语言反射
Go 语言反射 反射是指在程序运行期对程序本身进行访问和修改的能力.程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分.在运行程序时,程序无法获取自身的信息. 支持反射的语言可以在 ...
- SQL Server 索引分析开关
set statistics io onset statistics profile on
- [IDA] 自动下载符号
当现实无法自动下载符号时,看下面交互窗口,提示安装 VC++ 2008. 安装成功之后就会自动下载符号.
- 漫谈golang设计模式 简易工厂模式
目前学习golang的主要需求是为了看懂TiDB的源码,下面我们复习一下简易工厂模式的思想 工厂类型分为三种,创建型模式,结构型模式,行为型模式. 简单工厂 使用场景:考虑一个简单的API设计,一个模 ...