zoukankan      html  css  js  c++  java
  • 【2018.10.27】CXM笔记

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

    1. 一个棋盘,每个格子最开始都是白的。可以按一个格子,它马跳(日字跳)能到达的 $8$ 个格子反色(当前格不反色)。问有多少种方案使棋盘全部变黑。$n,mle 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(mle 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$套了起来,二维前缀和优化即可。

  • 相关阅读:
    KVM安装配置
    cobbler配置解析
    denyhosts配置详解
    Rsync+sersync实现数据实时同步
    Linux启动提示Kernel panic
    oracle常用的数据字典
    Cachefiled
    from __future__ import division
    Java Map用法
    CCF系列之窗口(201403-2)
  • 原文地址:https://www.cnblogs.com/scx2015noip-as-php/p/9861346.html
Copyright © 2011-2022 走看看