zoukankan      html  css  js  c++  java
  • 被难题分享

    染色

    (f Description)

    一个平面图,只有与坐标轴平行的边和成45°的边,构造一个四色的染色方案。

    (f Solution)

    按照从上到下,从左到右的顺序染色,每个点被染到的时候最多会连向四个点,显然我们只需要考虑这四个点颜色不同的情况。假设这四种颜色是abcd。

    如果我们要将当前这个点染成a,那么我们要将a改成c,然后顺着这条路,把a和c翻转(实际上并不是一条路,而是一个二分图),如果沿着这条路走不会从1号点走到3号点,那么由于1号点连出去的是个二分图,直接全部翻转就好了。否则的话我们发现由于这是一个平面图,那么2号点和4号点是不会连上的,于是可以随便翻转一边。

    【清华集训2014】矩阵变换

    传送门

    实际上就是给每行匹配一个数,我们让 (pos[i][j]) 表示 (i) 这个数在第 (j) 行的位置。假设第 (i) 行匹配的数是 (x) ,那么要满足对于所有 (pos[x][j]>pos[x][i]) 的行 (j) ,需要有 (pos[match[j]][j]<pos[x][j]),这实际上就是一个稳定婚姻问题。(稳定婚姻的要求就是不能双飞)

    周指导讲的东西

    引入问题

    一个 (n imes kn) 的格子,从左下角走到右上角,不能经过 (y=kx) ,求方案数。

    一般化问题的解法

    给定数列 (a) ,对于任意经过的 ((x,y)) ,要满足 (y leq a_x)

    先把 (a_i) 取个前缀min显然不影响答案。

    (f(L,R,U,D)) 表示在这一块里从最下面一行走到最右面一列的方案数。

    (mid=frac{L+R}{2}) ,左下和右上变成了更小的子问题,右下角那一块是没有限制的,可以FFT优化一下,系数大概就是一堆组合数?

    丑陋而莫名其妙的图片。。

    这样是两个log的。

    回到最开始的问题,由于子问题是一样的,于是发现可以倍增FFT做了。

    更优良的做法

    OEIS一下

    封闭形式是 ({kn+n choose n}/(kn+1)) (不是很确定)

    生成函数是 (G(x)=1+xG^{k+1}(x)) ,组合意义并没有理解。。

    然后封闭形式的话,《具体数学》P302-305

    首先搞一个数列 (a) ,其中 (a_i in mathbb Z),并且 (sum a_i=1),而且要满足 (a) 的所有前缀和 (>0)

    可以发现一些性质:在 (a) 的所有轮换中,只有 (a) 是满足后面那个条件的。并且不会出现 (a) 及其所有轮换都不满足后面那个条件的情况。

    对于卡特兰数,可以认为 (a) 的取值是 (n)(1)(n)(-1),并且为了从 (geq 0) 变成 (>0) 我们在前面加一个 (1),一个符合条件的数列有 (2n+1) 个轮换,于是就很容易得到方案数是

    [{2n+1 choose n+1}/(2n+1)={2n choose n}/(n+1) ]

    推广到 (n imes kn) 的方格,我们认为向右走是 (+k) ,向上走是 (-1) ,类比卡特兰数就可以得到方案数是

    [{kn+n+1 choose n}/(kn+n+1)={kn+n choose n}/(kn+1) ]

    然后就可以切题了?

    【清华集训2016】你的生命已如风中残烛

    em,这东西好像叫Raney定理。。

  • 相关阅读:
    解决ios下iframe不能滑动
    每天一题之js执行顺序
    async函数的返回值
    小程序自定义Tabbar
    windows10配置vue3项目踩坑记录
    vue2+循环链表解决一个历史趣题
    小程序内协议使用的三种方法
    HDFS的java操作
    HDFS工作原理笔记
    win10已经编译好的hadoop2.6.5
  • 原文地址:https://www.cnblogs.com/ymzqwq/p/12023325.html
Copyright © 2011-2022 走看看