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。

  • 相关阅读:
    Centos安装Memcached和(Nginx)Memcache扩展详细教程
    文章已被删除!
    phonegap安卓手机开发入门
    微信分享链接带图片文字和描述
    CSDN数据库被爆 统计CSDN用户都喜欢哪些密码
    ...
    重新初始化 VS2010
    spark系列之基本概念
    python 数字字典加密非汉字
    MySQL 5.7实现 row_number窗口函数
  • 原文地址:https://www.cnblogs.com/CooCoo/p/3235208.html
Copyright © 2011-2022 走看看