自闭集训 Day1

组合计数

T1

\(n\le 10\):直接暴力枚举。

\(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le B\)),那么对答案的贡献就是
\[
{B-x-y+n-1\choose n-1}
\]
根据范德蒙德恒等式
\[
{a+b\choose n} =\sum_{i=0}^n {a\choose i}{b\choose n-i}
\]
所以上面可以拆开成
\[
\sum_{i=0}^{n-1} {C-x\choose i}{-y\choose n-i-1}
\]
枚举\(x\),关于\(y\)是一个前缀和。

AGC036 F

如果没有下界的限制,只有\(p_i\in[0,r_i]\)的限制,那么把\(r_i\)排序,方案数就是
\[
\prod (r_i-i)
\]
那么对于\(p_i\in[l_i,r_i]\),可以发现把\(x=i,y=p_i\)的图像,必然是一个环:

观察图像,\(r[1,n]\)是最大的,如果选了就一定在最上面,而\(l[1,n]\)和\(r[n+1,2n]\)混在一起。而且如果\(l_i>l_j\),那么\(r_i>r_j\)。

对混在一起的东西排序。如果知道总共选了几个\(l[1,n]\),那么当前选了之后的排名也可以求出来。

所以外层枚举选了\(k\)个\(l\),然后内层DP:设\(dp_{i,j}\)表示前\(i\)个选了\(j\)个\(a\)的方案数。最后拿出\(dp_{2n-1,k}\)贡献答案。

不等关系

把\(>\)看做"无限制"-"<"来容斥,于是可以看做是<<?<?<<<????<?的一个串求方案数。把\(<\)看做一条边,那么就是把\(n\)个数丢进这么多个集合里,方案数就是
\[
\frac{n!}{\prod size_i!}
\]
所以可以设\(dp_i\)表示对前\(i\)个数分组,带容斥系数的方案数,于是可以枚举上一次分组的位置来转移。

使用分治FFT来转移,可以做到\(O(n\log^2 n)\)。

T4

发现如果直接算每行每列的方案数乘起来,那么会算重。

什么时候会算重呢?可以证明,只有形如

的时候会算重。

我们强制行占掉了那个交点,容斥不合法的方案,枚举有几对行列不合法,得到
\[
\sum_{i=0}^n (-1)^i {n\choose i}{m\choose i} i! (m+1)^{n-i}(n+1)^{m-i}
\]
就没了。

随机立方体

可以发现,\([0,1]\)内均匀随机与直接放\((WXH)!\)种排列是等价的。

二项式反演,转换为求\(f_k\)表示至少有\(k\)个是极大的的方案数。

先考虑二维的情况。如果一个点是极大的,那么一行一列的数都要比他小。

把极大的点拎出来,不妨设他们是从左上角往下一条对角线,并且是单调递减的。

那么对于一个不是极大的点,它的唯一限制就是小于与他同一行/列的最小的极大点。

于是可以把小于号看做一条边,矩形内的点就构成了一个森林的结构,其中右下角的点没有父亲。

根据堆的个数是\(\frac{n!}{\prod size_i}​\)的结论,可以分析出方案数就是
\[
(nm)!/(\prod_{i=1}^k (nm-(n-i)(m-i)))
\]
(大概是吧)

然后乘上一堆组合数就是答案。

拓展到三维,应该是类似的。(应该是吧)

random graph

设\(p_{n,m}\)表示\(n\)个点,随机\(m​\)条边,连通的概率。

设\(q_{n,m}=1-p_{n,m}\)。

那么答案就是\(\sum_m q_{n,m}\)。

归纳证明,可以知道\(q_{n,m}=\sum_{i=0}^{n^2} c_{n,i}(i/n^2)^m\)。

所以答案就是
\[
\sum_m \sum_{i=0}^{n^2} c_{n,i}(\frac i {n^2})^m\\
=\sum_{i=0}^{n^2} c_{n,i}\frac 1{1-\frac i {n^2}}
\]
最后用某种方式求出\(c_{n,i}\),就做完了。

咕了

endless spin

显然\(\min-\max\)容斥,转换为每一种撒点方法的\(\frac{1}{n(n+1)-\sum s(s+1)}\)之和。

设\(dp_{i,j}\)表示前\(i\)个点,\(\sum s(s+1)=j\),带容斥系数的方案数。

转移\(O(n)\),总复杂度\(O(n^4)\)。

LGV lemma

对于一个有向无环图,给定\(a_{1..n}\)、\(b_{1...n}\),求\(a_1\rightarrow b_1\),\(a_2\rightarrow b_2\),……的路径组,并且他们两两不想交的方案数。

设\(g_{u,v}\)表示\(a_u\rightarrow b_v\)的方案数,那么答案就是\(g\)的行列式。

2019暑期金华集训 Day1 组合计数的更多相关文章

  1. 2019暑期金华集训 Day1 数据结构

    自闭集训 Day1 数据结构 CF643G 用类似于下面的方法,搬到线段树上. 如何合并两个集合?先全部放在一起,每次删掉最小的\(cnt_i\),然后把其他所有的\(cnt\)都减去\(cnt_i\ ...

  2. 2019暑期金华集训 Day7 分治

    自闭集训 Day7 分治 主定理 由于我沉迷调题,这个地方没听课. 某些不等式 咕了 nth_element 使用快速排序的思想,选一个中间点,看左右有多少个. 期望复杂度\(O(n)\). 首先把一 ...

  3. 2019暑期金华集训 Day5 生成函数

    自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...

  4. 2019暑期金华集训 Day7 动态规划

    自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...

  5. 2019暑期金华集训 Day6 杂题选讲

    自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...

  6. 2019暑期金华集训 Day6 计算几何

    自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\tim ...

  7. 2019暑期金华集训 Day5 树上数据结构

    自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...

  8. 2019暑期金华集训 Day3 字符串

    自闭集训 Day3 字符串 SAM 考虑后缀树. SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀. 于是可以以此来理解SAM. 每一条路径对 ...

  9. 2019暑期金华集训 Day3 图论

    自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...

随机推荐

  1. C#使用管理员权限打开cmd执行命令行

    最近遇到个棘手的问题,服务器远程连不上,但是ftp可以,可能远程连接的服务挂了或者防火墙入站规则有点问题,想要重启,得找机房工作人员,还是挺麻烦的 想了想可以上传个执行cmd命令的东西,然后远程访问触 ...

  2. easyExcel用于导入导出

    1.添加依赖: <!-- 现在已经更新到1.1.2-beta5 --> <dependency> <groupId>com.alibaba</groupId& ...

  3. 论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态)

    原文:论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态) 求助:等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态 http://bbs.csdn.n ...

  4. Django配置websocket请求接口

    1.settings.py INSTALLED_APPS = [ '...', 'channels', '...', ] ASGI_APPLICATION = 'server.routing.appl ...

  5. 【转载】程序设计过程中SQL语句Where 1=1的作用

    在Asp.Net网站或者Java网站的程序设计的过程中,很多时候我们可以看到拼接SQL语句的写法的时候都可以看到最前面有个Where 1=1这个条件,其实Where 1=1这是个恒等式,SQL语句写成 ...

  6. H5之拖拽

    步骤: 1.为将要拖拽的元素设置允许拖拽,并赋予dragstart事件将其id转换成数据保存: 2.为容器添加dragover属性添加事件阻止浏览器默认事件,允许元素放置,并赋予drop事件进行元素的 ...

  7. 实现对MySQL数据库进行分库/分表备份(shell脚本)

    工作中,往往数据库备份是件非常重要的事情,毕竟数据就是金钱,就是生命!废话不多,下面介绍一下:如何实现对MySQL数据库进行分库备份(shell脚本) Mysq数据库dump备份/还原语法: mysq ...

  8. 【SpringMVC】统一异常处理

    一.需求 二.统一异常处理解决方案 2.1 定义异常 2.2 异常处理 2.3 配置统一异常处理器 2.4 异常处理逻辑 一.需求 一般项目中都需要作异常处理,基于系统架构的设计考虑,使用统一的异常处 ...

  9. 爬虫之 selenium模块

    selenium模块   阅读目录 一 介绍 二 安装 三 基本使用 四 选择器 五 等待元素被加载 六 元素交互操作 七 其他 八 项目练习 一 介绍 selenium最初是一个自动化测试工具,而爬 ...

  10. xlsxwriter写入Excel文件

    #coding=utf-8 import xlsxwriter #加载包 myWorkbook = xlsxwriter.Workbook(opath+'/'+file_name+'.xlsx') # ...