• 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);
    
  • 相关阅读:
    python新手中常见疑惑及解答
    jquery中常见问题及解决办法小结
    javascript常用字符串函数和本地存储
    sublim3常用插件安装
    PHP-Yii执行流程分析(源码)
    PHP-流的概念与详细用法
    PHP-数据库长连接mysql_pconnect的细节
    PHP-"php://(类型)"访问各个输入/输出流以及全局变量$HTTP_RAW_POST_DATA讲解
    MySQL-LAST_INSERT_ID();使用注意事项
    SQL SERVER-时间戳(timestamp)与时间格式(datetime)互相转换
  • 原文地址:https://www.cnblogs.com/lizbaka/p/10483476.html
Copyright © 2020-2023  润新知