【2018.10.27】CXM笔记

一个数大约有 $O(\sqrt(n)/log^2(n))$ 个约数。

1. 一个棋盘,每个格子最开始都是白的。可以按一个格子,它马跳(日字跳)能到达的 $8$ 个格子反色(当前格不反色)。问有多少种方案使棋盘全部变黑。$n,m\le 200$。

先考虑翻转十字(上下左右四格)只有一排的做法:按 $2$ 个空 $2$ 个。

模 $4$ 余 $0$ 有一种方案(第一个和最后一个不选),余 $1$ 没有方案(有一端格子一定翻不了),余 $2$ 有 $1$ 种方案,余 $3$ 有 $2$ 种方案。

一通尝试后,发现这很像某道扫雷题(本篇T1)。

朴素暴力等于枚举左上角 $1*1$ 的情况……但很显然,这样有两个不确定的格子能影响左上角那一个格子的结果,因此就是龟速暴力了。

而 $2*2$ 的格子中,右上角和左下角那个格子都只被一个不确定的格子影响。这样就能能先确定第一行。然后由于只能在第二行用十字影响第一行的一个格子,因此反过来想,为了让第一行都变黑,第一行也就能唯一确定第二行。列同理。

其实枚举左上角 $2*2$ 的情况,整个棋盘就确定下来了。可以延续上面的思路证明。

由于左上角 $2*2$ 能确定前两行,把棋盘翻转过来想,它就能确定前两列。所以每一行前 $2$ 个都确定了,后面也全都确定了。

马字的话,观察它影响范围的一个角的部分,发现只要枚举左上角 $3*3$ 的情况就可以了。

 

2. 给你一些节点的度数,问你有多少种 $n$ 棵节点的无根树。均为无向边。

 

3. 给你一棵 $n$ 个点的树和无向图,现在请你给树编号,使它是无向图的一棵生成树。求总方案数。

树上dp+状态压缩

$f(i,j,s)$ 表示 $i$ 的父亲是 $j$,没有编号的点集是$s$。

 

4. $n(\le 50)$ 个篮子,$m(m\le 50)$ 种水果,$a_{i,j}\le 50$ 表示第 $i$ 个篮子中第 $j$ 种水果的数量。

现在有两种随机操作:

1.等概率选篮子子集;

2.混合后等概率选一个水果。

问每种水果的占比率。

 

第 $i$ 种水果的概率:

 

5. $n*n$ 的图形,挖掉若干个矩阵,使每行每列只能有一段连续挖掉的地方。求总方案数。

肯定是中间挖掉一块,且上、下端是单峰的。

所以 $f(i,j,k,x,y)$ 表示第 $i$ 列的上端为第 $j$ 行,下端为第 $k$ 行,$x,y$ 分别表示上、下端在上升还是下降/下降还是上升。

然后发现每次转移是 $n^2$ 的($j,k$两重枚举),时间爆了。比如:

$f(i,j,k,0,0) \space=\space \sum_{j'\le j}\sum_{k'\le k} f(i-1,j',k',0,0) \space+\space \space \sum_{j'\le j}\sum_{k'\gt k} f(i-1,j',k',0,1)$

发现是俩$sigma$套了起来,二维前缀和优化即可。

 

posted @ 2018-10-27 15:20  大本营  阅读(184)  评论(0编辑  收藏  举报