zoukankan      html  css  js  c++  java
  • 一些必要的优化

    一、求找到某个数的所有素因子:

    自己的做法:使用一个vector,在筛素数的时候,将当前素数i,放入vec[j],其中j为i的倍数。这样如果询问很多,则是一个可行的方法。但是如果询问较少,空间和时间花费都会很大。

    优化做法:筛素数的时候,对于每个数,只需要记录它的最小(或最大)的素因子就行了。查询的时候,每次都除以当前数的最小的素因子,然后更新当前数,继续往下找。这样,就能找到所有的素因子了。这种方法对于询问次数较少的题目,将会比第一种做法快上很多。

    二、假如已知当前的一个二进制状态sta,求其所有子状态s1,s2使(s1&s2)==0 && (s1|s2)=sta。

    自己的做法:

    (1)dfs搜索。对于状态sta,若某一位i上为1,则枚举子状态s1的第i为为0或者为1。s2=sta^s1。搜出所有情况。

    (2)使用lowbit找出所有sta为1的位数,然后逐位枚举,跟搜索差不多,只是换成2进制枚举的写法。

    优化做法:直接贴代码好了i为sta,j为s1。

            for (int i = 1; i < (1 << (n - 1)); i++) {
                for (int j = i; j; j = (j - 1) & i) {
                    tot++;
                }
            }

     三、对于mod运算,能不用就不用。因为它带来的常数复杂度会有很大可能导致TLE。

  • 相关阅读:
    Saltstack module gem 详解
    Saltstack module freezer 详解
    Saltstack module firewalld 详解
    Saltstack module file 详解
    Saltstack module event 详解
    Saltstack module etcd 详解
    Saltstack module environ 详解
    Saltstack module drbd 详解
    Saltstack module dnsutil 详解
    获取主页_剥离百度
  • 原文地址:https://www.cnblogs.com/CooCoo/p/3235208.html
Copyright © 2011-2022 走看看