zoukankan      html  css  js  c++  java
  • 常见错误总结

    这篇文章是必要的 至少我认为 可以提醒自己哪些是常见的坑点。

    1. 线段树合并常见错误点。

    合并之前 子树线段树是有效的 如果在merge处不新建节点那么 儿子线段树是无效的 这点一定要注意!因为这个时候儿子线段树可能已经被修改了。

    那么其实就有做法了在merge的时候新建节点不过这样空间消耗最坏是nlogn^2的接受不了的话那么就在递归和并的时候查询儿子操作 不要放在最后差 这点可以配套离线搞.先把要求的东西离线下来然后dfs线段树合并离线搞就很稳了。

    2.FFT错误点

    两个1e6的多项式相乘2e6但是数组要开到$2^{21}$=2097152这个大小才行也就是2100000。不然很容易RE。

    3.枚举子集错误点

    所谓二进制枚举子集 就是把一个二进制数的所有子集都给枚举出来 这点要注意而不只是只枚举了几个1的情况 这是我以前概念不清 至于两个for枚举二进制for枚举子集则是可以利用二项式定理证明。

    4.后缀数组

    把两个字符串接在一起时中间必须加入间隔符 防止第一个字符串用到第二个字符串的内容。重点哦。

    5.莫队的优化

    莫队有的时候是需要卡常的 有一个绝招是奇偶排序.

    原本是这样排的:

    int cmp(query a, query b) {
        return belong[a.l] == belong[b.l] ? a.r < b.r : belong[a.l] < belong[b.l];
    }
    

    现在这样排序:

    int cmp(query a, query b) {
        return (belong[a.l] ^ belong[b.l]) ? belong[a.l] < belong[b.l] : ((belong[a.l] & 1) ? a.r < b.r : a.r > b.r);
    }
    

    这样 就可以优化大部分的常数啦...实测挺快的其实..

    ST表LCA 注意数组不要开小这个东西是两倍 注意对于预处理的时候边界处理要正确 这个地方挂过很多次了。

  • 相关阅读:
    Django 同步数据库命令syncdb,makemigrations,migrate
    新mac上安装,查看,设置一些常用的软件
    脚本之文本练习
    hadoop工作流程
    find命令
    awk用法
    apache笔记
    iscsi原理
    nfs服务的配置
    django用户投票系统详解
  • 原文地址:https://www.cnblogs.com/chdy/p/12131367.html
Copyright © 2011-2022 走看看