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]\)表 ...
随机推荐
- How to: Implement File Data Properties 如何:实现文件数据属性
This topic demonstrates how to implement a business class with a file data property and a file colle ...
- GC与内存分配策略
一.GC 第一步:判断对象是否已死?有两种方法:第一种是引用计数法,即给对象添加一个引用计数器,当被引用时,计数器就+1:当引用失效时,就-1:当计数器为0时,代表对象没有被引用.但是计数器的缺点就是 ...
- Unity容器<1>
参考地址: https://docs.microsoft.com/en-us/previous-versions/msp-n-p/dn170416(v=pandp.10) 总览 Unity是一个轻量级 ...
- vue常见问题处理 -- 页面刷新时,如何保持原有vuex中的state信息
一.页面刷新时,如何保持原有vuex中的state信息 页面刷新后,原有的 vuex 中的 state 会发生改变,如果在页面刷新之前,可以将 state 信息保存,页面重新加载时,再将该值赋给 st ...
- 解决:target overrides the `GCC_PREPROCESSOR_DEFINITIONS`
[!] Please close any current Xcode sessions and use `******.xcworkspace` for this project from now o ...
- java web轻量级开发面试教程
最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备 在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二 ...
- TCP服务端
出处: https://blog.csdn.net/DGH2430284817/article/details/86653294问题描述: 在用socket的通信中,经常会出现这种情况,客 ...
- C# $插值符号
概述 $ 符是在C#6.0出现的一个新特性,本质就是C#的一个语法糖,作用在于替代当前的String.format(),简化其过程.他们的作用都在于为字符串提供占位符,并为字符串传入变量. 用法 关于 ...
- FAQ: Oracle Flex ASM 12c / 12.1 (Doc ID 1573137.1)
FAQ: Oracle Flex ASM 12c / 12.1 (Doc ID 1573137.1) APPLIES TO: Oracle Database - Enterprise Edition ...
- tensorflow基础-数据类型
一:tensorflow中的计算定义和执行 首先,对于tensorflow来说,最重要的概念就是图(Graph)和会话(Session),tensorflow的计算思想是:以图的形式来表示模型,表示和 ...