zoukankan      html  css  js  c++  java
  • lizbaka的犯蠢记录

    犯蠢合集,今日最乐


    变量重名

    应当尽可能地使变量名包括函数名有意义,分清各变量的意义

    必要时可以使用namespace进行区分以尽可能避免撞车


    树链剖分,查询操作跳跃节点判定

    以下是错误代码

    //......
    while(top[x]!=top[y])
    {
    	if(dep[x]<dep[y])(swap(x,y));//在此处发生错误
        //......
    }
    

    以下是正确代码

    //......
    while(top[x]!=top[y])
    {
    	if(dep[top[x]]<dep[top[y]])(swap(x,y));
        //......
    }
    

    节点在往上跳的时候,是直接跳到所在链的链顶的,应当比较两个节点所在链的链顶节点之深度,使更深者往上跳

    如按照错误代码书写,可能导致跳跃过度从而造成答案计算重复(计算了多余的节点)


    树形数据结构查询K小值,向右子树查询时的问题

    常出现于平衡树,权值线段树等问题中

    (x)等于当前节点的左儿子管辖范围内元素个数

    若通过查询(x)得知(k)小值不在左子树中,向右子树递归

    此时应注意进入下一层递归后,应修改(k)的值为(k-x)以在右子树中获得正确的答案!

    判断结构和循环结构下的逗号与压行问题

    逗号和压行可以令代码看上去更加简洁

    但在使用时应当十分谨慎,在判断结构循环结构中使用时更应注意结构的有效范围

    if后面出问题是绝对调不出来的

    FFT/NTT等数组大小的问题

    由于需要将多项式扩展到(2^n)项,因而数组大小至少要开(4)(8)

    SAM的状态数问题

    后缀自动机的状态数是(O(|T|^2))的,所有与状态数有关的数组都要开两倍大小,或者索性把maxn设成两倍

    树形数据结构的标记上传和下传问题

    时刻注意操作前/后是否需要进行信息上传/下传,如线段树,LCT,splay等都需要格外注意

    Manacher的特殊字符插入

    插入特殊字符时,必须使原字符串中的所有字符两侧均有特殊字符,并且字符串数组前必须插入一个更加特殊的字符

    因此,插入特殊字符后的串必须从1开始存储

    例子:

        scanf("%s",in+1);
        int p=strlen(in+1);
        str[1]='#',str[0]='^';
        for(register int i=1;i<=p;++i)
        {
            str[i*2]=in[i];
            str[i*2+1]='#';
        }
        n=strlen(str+1);
    
  • 相关阅读:
    《结对-贪吃蛇游戏-测试过程》
    《课后作业-阅读任务-阅读提问-2》
    课后作业-阅读任务-阅读提问-3
    《20171005-构建之法:现代软件工程-阅读笔记》
    《结对-贪吃蛇游戏-项目进度》
    《团队-科学计算器-项目进度》
    《团队-科学计算器-代码设计规范》
    《团队-科学计算器-开发环境搭建过程》
    自制3D打印机---挤出头
    __construct 与 ThinkPhp _initialize 的区别
  • 原文地址:https://www.cnblogs.com/lizbaka/p/10483476.html
Copyright © 2011-2022 走看看