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

    A. 数论

    一条性质: 对于一个不良好的数$x$,$x*p^c$一定不是良好的。

                       因为那些小于x,并且因数比x多的数,乘上$p^c$仍然更优。

    这个性质告诉我们:一个目前认为不优的数,不会贡献出良好的数。

    显然最大的质因子不会很大,良好的数也不会很多。

    实践得出的结论:即使在k取到233的时候,当n为1e18,良好的数只有四万多个,其中存在的最大的质因子为293。

    因此我们得到得到所有良好数的方法:

    1.刚开始只认为1是良好的。

    2.枚举质因子p,对于目前认为每个良好的数,枚举c,将它乘上$p^c$  $(c>=0)$放在一个数组里。

    3.将数组排序。

    4.从小到大扫描数组,用堆维护前k+1大约数,将不良好的数过滤掉。

    5.认为没有过滤掉的数是良好的。

    6.返回步骤2,直到连续几个质因子,无法得到任何一个新的良好的数。

    B. 位运算

    考场上A掉了,比较简单。

    观察题目性质,无需状压,只关注存在几个1。

    简单的dp,记录转移的前趋,

    通过1的个数构造出一组合法的位运算的解,不断找前趋回溯,构造出可行解。

     

     

     

    C. 旅行

    码不出来。 (又码出来了)

    列出dp式子,简单的换根dp,求出根小于$b[1]$的方案数。

    对于根为$b[1]$,用数位dp思想dfs。

    尝试填入每个点,动态开点线段树维护一下可以做到$O(nlogn)$

  • 相关阅读:
    运算符
    javaScript注意事项
    初识JavaScript.
    tomee.xml
    setenv.bat
    catalina.properties
    tomee 系列问题
    tomee 第一个 远程调用 Message-driven bean(MDB)
    tomee 第一个 远程调用 Session Bean
    Java EE 参考文档及sample
  • 原文地址:https://www.cnblogs.com/skyh/p/11357185.html
Copyright © 2011-2022 走看看