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

    A. 字符交换

    枚举最终出现的字符,那么答案具有单调性。

    之后枚举相同字符的起点,可以计算出终点。

    最优策略显然是换到中间的字符旁边,所以用前缀和维护一下就完了。

    B. 平方数

    考虑怎样的两个数相乘可以构成平方数:

    将两个数分别质因数分解,如果二者奇数的质因子集合相同,那么可以构成。

    所以可以用哈希表压奇数质因子集合。

    然而比较难处理的是质因数分解,暴力根号筛会$TLE$。

    这时可以考虑利用本题的特殊性质,即只需要筛出平方质因子,剩下的自然是奇数质因子集合。

    一个$O(a_i^{frac{1}{3}})$的筛法是,

    枚举质数直到$a_i^{frac{1}{3}}$大小,将平方因子直接除掉,将剩余的奇数质因子提出。

    最后特判筛后剩余的结果,如果是平方数,那么将它除掉。

    提出的质因子乘最终筛剩余的数,即要求的奇数质因子集合。

    可以证明上述的筛法是正确的:

    设最后筛剩下的数为$x$,如果仍然含有平方质因子,那么

    $x$一定可以表示为$x=k*p^2$ $(p>x^{frac{1}{3}})$。

    那么$k<x^{frac{1}{3}}$,所以$k$只能为$1$,

    因为特判了最终的$x$为平方数,正确性得证。

    C. 多维网络

    直接用排列组合,可以得出在没有坏点的情况下,两点之间的路径数。

    所以考虑用奇加偶减的容斥处理这个问题。

    显然坏点之间存在一个拓扑序,即按维排序。

    设$dp_{i,j}$表示到第$i$个坏点,总共经过了$j$个坏点的方案数。

    可以进行显然的$dp$转移,然而这样做的复杂度是$O(n^3d)$。

    实际上第二维并没有用,因为只关注奇偶性来进行容斥操作,所以直接压掉第二维就好了。

  • 相关阅读:
    气象数据集数据和相关源码
    农产品质量追溯系统/质量安全追溯系统
    Nutch2.x 演示抓取第一个网站
    Nutch的配置以及动态网站的抓取
    leach-matlab
    leach协议matlab仿真代码
    无线传感器网络数据融合技术
    无线传感器网络数据融合概述
    No pressure, no diamonds.
    Hibernate缓存应用的积累与总结
  • 原文地址:https://www.cnblogs.com/skyh/p/11828816.html
Copyright © 2011-2022 走看看