zoukankan      html  css  js  c++  java
  • 2019.10.19题解

    午睡考试,白浪费了一套题,说实话这套题是真的不错,出题人的提示思考方向明确,暴力分数友好,考察的知识点也很基础

    A. 贝尔数

    标签:

    CRT+矩阵快速幂

    题解:

    出题人挺良心的,给了最重要的两个式子,考虑对mod数分解,每个质数做一发CRT,

    由于n很大,所以要用矩阵乘优化,注意B[p*2-1]的转移是两层

    B. 穿越广场

    考场上$ O(n^4) $的暴力过了20w组对拍,但是n,m读反了导致遗憾爆零,引用某yh的话:

    没想到你的思维那么僵化

    但经过我的强(feng)烈(kuang)谴(chui)责(da)他现在已经不会这么说了

    标签:

    AC自动机+Dp

    题解:

    50分的Dp定义了f[i][j][k][L]代表i个'R',j个'D',s[0]匹配了k位,s[1]匹配了L位的方案数,KMP预处理nxt数组Dp即可

    重点在于如何优化这个Dp:

    考虑对于s[0]和s[1]建一个AC自动机,

    之后设dp[i][j][k][0/1/2/3]代表选了i次,j个'R',现在在AC自动机上的k节点,最后一维是匹配的状态

    这样复杂度就变成了$ O(n^3) $了

    C. 舞动的夜晚

    标签:

    最大流+Tarjan

    题解:

    首先用Dinic求出一组最大匹配,之后建一张新图:

    (直接引用题解啦,描述太麻烦)

    匹配边(i,j) j到i连边
    非匹配边 (i,j)  i到j连边
    匹配的左点i (i,S)
    不匹配的左点i  (S,i)
    匹配的右点j (T,j)
    不匹配的右点j (j,T)

    之后Tarjan缩点,对于每一条非匹配边来说,两个端点不在一个SCC内即为不合法边,简单证明一下:

    设这条非匹配边为(i,j),vis[i]代表i是否匹配,显然当vis[i]&vis[j]==0时有SCC则一定合法,

    对于vis[i]==vis[j]==1的情况,我们可以像匈牙利算法一样找到(也可能没有)曾广路,转化为上述问题

  • 相关阅读:
    人生中最重要的三位老师
    自我介绍
    秋季学习总结
    第五周学习总结
    第四周总结
    第三周基础作业
    判断上三角矩阵
    第二周作业及编程总结
    求最大值及其下标
    查找整数
  • 原文地址:https://www.cnblogs.com/AthosD/p/11709169.html
Copyright © 2011-2022 走看看