zoukankan      html  css  js  c++  java
  • $2018/8/19 = Day5$学习笔记 + 杂题整理

    (mathcal{Morning})

    (Task 1) 容斥原理

    大概这玩意儿就是来用交集大小并集大小或者用并集大小交集大小(2333)

    那窝萌思考已知(A_1,A_2,A_3 cdots A_n),求(|A_1 cup A_2 cup A_3 cdots A_n|)

    那我们考虑用(|A_1 cap A_2 cap A _3 cdots A_n|)来推

    (emmmm)实际上就是$$|A_1 cup A_2 cup A_3 cdots A_n| = sumlimits_{k=1}^{n}{(-1)^{k-1}sum limits_{1 leq i_1 < i_2 cdots i_k leq n}|A_{i_1} cap A_{i_2} cap cdots A_{ik}| }$$

    这个问题其实换一种方式思考,就可以逆过来推出(|A_1 cap A_2 cap A_3 cdots A_n|)

    因为$$|A_1 cap A_2 cap A_3 cdots A_n| = overline {overline {A_1} cup overline {A_2} cdots cup overline {A_n}}$$

    我们直接暴力带入容斥的基本公式,(233)好像很麻烦的样子

    那么可以有$$|A_1 cap A_2 cap A_3 cdots A_n| = 2^n - sumlimits_{k=1}^{n}{(-1)^{k-1}sum limits_{1 leq i_1 < i_2 cdots i_k leq n}overline{|A_{i_1} cup A_{i_2} cup cdots A_{i_k}|} }$$

    我们可以把最后一项的补集拿掉,变成这样:

    [|A_1 cap A_2 cap A_3 cdots A_n| = 2^n - sumlimits_{k=1}^{n}({(-1)^{k-1} cdot inom{n}{k} cdot 2^n - sum limits_{1 leq i_1 < i_2 cdots i_k leq n}|A_{i_1} cup A_{i_2} cup cdots A_{i_k}|} ) ]

    我一开始把(Sigma) 里面的全集当成了(2^k)……(GG)然后还因为没有加括号被胡佳琛嘲讽了一顿( m{TAT})

    似乎知道这些并没有什么用,因为题目里面根本不可能这么浅显(2333) ……

    今时今日所记,不期理解多么深刻,只期不忘却罢了。

    小例题:

    (color{red}{mathcal{Description}})

    (n × m) 的棋盘上放棋子。 棋子有 (c) 种不同的颜色。 同一个位置最多放一个棋子。 要求每行至少有一个棋子,每列至少有一个棋子,每种颜色的棋子至少在棋盘中有一个。 求方案数对 (P) 取模。 (n, m, c ≤ 100, P ≤ 10^9)

    这个题就是一个容斥题……不会不会(233)

    (color{red}{mathcal{Solution}})

    一般来说,这种容斥题目,都是有着某种诡异的限制,比如什么"每行每列至少放XXX个","不合法的情况包括"之类的专业智障词汇……所以我们在思考容斥的状态时不妨把这些也考虑进去。

    不用慌,其实我在写下这些文字的时候也是很蒙圈,也是一边(Tab + Alt)看题解一边写的,所以不要担心,大家水平都不咋地。

    啊哈哈哈哈哈哈只是开个玩笑啦~

    此处考虑一个限制条件:至少一个。那么不妨令 (A_i) 表示第 (i) 行至少有一个棋子的方案, (B_j) 表示第 j 列至少有一 个棋子的方案, (C_k) 表示第 (k) 种颜色的棋子至少有一个的方案。

    那我们其实要求的就是一个一个大交集:$$A_1 cap A_2 cap A_n cap B_1 · · · cap B_m cap C_1 · · · cap C_c$$。

    那么接着令(f(p, q, r)) 表示违反了 (p) 个行限制, (q)个列限制, (r) 个颜色限制的 方案数。

    ▶ $$f(p, q, r) = inom{n}{p} inom{m}{q} inom{c}{q}(c + 1 - r)^{(n-p)(m-q)}$$.

    答案是 $$∑ limits _{p=0}^{n}∑limits _{q=0}^{m}∑limits _{r=0}^{c}(-1)^{p+q+r}f(p, q, r)$$。 可以用 (O(100^2)) 时间预处理组合数, (O(nmc ~~log(nm))) 暴力计算。

    怕了吧,还有更可怕的(233)

    (color{red}{mathcal{Description-plus}})

    问题不变,但是(n, m, c ≤ 1000)

    (color{red}{mathcal{Solution-plus}})

    (hh)看起来(n^3)量级的算法过不去了……那么思考二项式定理

    我们展开(f)就会有

    $$ ∑ limits _{p=0}^{n}∑limits _{q=0}^{m}∑limits _{r=0}^{c}(-1)^{p+q+r}inom{n}{p} inom{m}{q} inom{c}{q}(c + 1 - r)^{(n-p)(m-q)}$$

    继而稍微稍微交换一下求和顺序有

    $$ ∑ limits _{p=0}^{n}∑limits _{r=0}^{c}(-1)^{p+r}inom{n}{p} inom{c}{q} ∑limits _{q=0}^{m}(-1)^qinom{m}{q} (c + 1 - r)^{(n-p)(m-q)}$$

    好像有些眉目……?继续

    $$ ∑ limits _{p=0}^{n}∑limits _{r=0}^{c}(-1)^{p+r}inom{n}{p} inom{c}{q} ∑limits _{q=0}^{m}(-1)^qinom{m}{q} ((c + 1 - r)^{n-p})^{(m-q)}$$

    我们会发现——又是泥!二项式定理!

    $$ ∑ limits _{p=0}^{n}∑limits _{r=0}^{c}(-1)^{p+r}inom{n}{p} inom{c}{q}((c+1-r)^{n-p}-1)^m$$

    我顿时发现好像构造二项式定理好像在组合问题中很常见,所以感觉好厉害的样子(233)

    不知道(Day1)的出题人当时出了一道这种题是怎么个想法,有可能他是为了提醒我们或者启发我们这个(trick)

  • 相关阅读:
    上位机获取Mjpeg视频流程序(C#.NET语言+AForge.NET控件)(待测试)
    C# Ping类的使用
    四旋翼上位机模拟显示四轴状态
    利用Sniffer分析 ARP报文
    C# 基于CSGL opengl
    用C#实现对本机IP地址的设置
    使用grub4dos引导Linux
    几个常用的批处理(DOS指令)的应用
    四旋翼飞行器之OSD(基本完成)
    Posix多线程编程学习笔记(转)
  • 原文地址:https://www.cnblogs.com/pks-t/p/9499703.html
Copyright © 2011-2022 走看看