zoukankan      html  css  js  c++  java
  • 模拟80 题解

    A. 贝尔数

    这个数据范围,似乎显然是矩阵快速幂。

    对模数质因数分解就会发现每个质因子只出现一次且很小。

    所以考虑求出$mod$每个质因子的结果并$crt$合并。

    题中已经给出了贝尔数在模$p$意义下的一个公式,

    所以直接保存$p$个贝尔数,矩阵快速幂转移就可以了。

    B. 穿越广场

    刚开始想了一些类似卡特兰数的$dp$+枚举重合部位的方法。

    然后发现去重似乎并不简单,于是放弃了。

    然后想到了用$kmp$进行$dp$转移,然后发现十测仍然过不去。

    然后就想到了$AC$自动机进行$dp$转移。

    设$dp(i,j,k,0/1,0/1)$表示到节点$i$,选了$j$个0,$k$个1,是否与串1匹配过,是否与串2匹配过。

    分别选$0$和选$1$的转移就可以了。

    C. 舞动的夜晚

    问题是二分图最大匹配的可行边集。

    暴力做法是,删去每条边然后重新跑一遍最大匹配。

    考场上大概想到了正解要用残流网络,然后就不会了。

    在跑出任意一个最大匹配之后,形成一个残流网络。

    对该残流网络中有流的边进行$tarjan$缩强联通分量,然后依次考虑每一条边。

    如果该边是满流的边,显然是可行边。

    如果该边没有流满并且连接的两个点在同一$scc$中,那么该边是可行的边,

    因为该操作减少了一个匹配,但由于存在环,可以将整个环上的边取反,增加一个匹配,达到增广的效果。

    如果该边没有流满并且连接的两个点不在同一$scc$中,那么该边不是可行的边,

    因为该操作导致了无法进行增广,就无法形成最大匹配。

  • 相关阅读:
    nginx的tcp/udp代理
    centos7的systemd服务详解
    centos7下ssh服务登陆认证详解
    laravel实现敏感词汇过滤
    laravel使用阿里云短信发送消息
    laravel中使用极光推送消息
    gitlab与jenkins结合构建持续集成
    gitlab的安装配置与简单使用
    centos7之firewalld防火墙的配置与使用
    使用码云,GitHub进行版本控制,并通过WebHook进行自动部署
  • 原文地址:https://www.cnblogs.com/skyh/p/11708375.html
Copyright © 2011-2022 走看看