zoukankan      html  css  js  c++  java
  • 模拟测试48

    T1:

      题意:

        给定两个字符串,可以改变任意K个字符,求出最长的公共子串。

      题解:

        暴力枚举两个串的起始位置,暴力匹配,失配字符超过K个时跳出即可。

        时间复杂度$O(N^3)$

    T2:

      题意:

        给一张无向图,求出不经过同一个点的长度为3的路径个数。

      题解:

        考虑容斥,先暴力DP所有方案,然后去除不合法方案。

        不合法方案有:两个点之间来回走,三个点之间来回走,三元环。

        两个点之间来回走方案数为:

          $sum_{i=1}^n du[i]$

        三个点之间来回走方案数为:
          $2*sum_{i=1}^n A_{du[i]}^2$

        三元环可以用bitset记录连边,然后暴力找。

        时间复杂度$O(frac{N^3}{32})$

    T3:

      题意:
        给一张有向图,每个点有一个权值,每个点都能到达权值为它的权值的子集的点,求一号点到所有点的最短距离。

        优化建图,将每个点和它的权值连边,每个权值向它去掉一个1后的点连边。

        每个点进入权值的边权为0,出来的边权为1,不然会错。

        然后边权只有0或1,、双端队列BFS即可。

        时间复杂度$O(N+M+2^K)$

  • 相关阅读:
    asp.net 、C#实现微信企业号OAuth2认证
    node event中 on emit off 的封装
    node
    Express中间件
    旋转的魔方
    通过gulp为requireJs引入的模块添加版本号
    css水平垂直居中(绝对定位居中)
    COLOR 与 COLORREF
    VMware Workstation 安装 vmware tools
    MMIV: starter level 1
  • 原文地址:https://www.cnblogs.com/hz-Rockstar/p/11561286.html
Copyright © 2011-2022 走看看