zoukankan      html  css  js  c++  java
  • 坏习纠正

    在刷题中遇到的许多低级、隐蔽而又致命的错误,在此整理,谨此改正。

    1.库函数的使用:

    之前做过许多题,一直没有发现这个致命错误,导致许多题目低效率通过(最坏甚至不能AC)。

    如strlen(s)函数计算字符串长度,其本身就含有O(n)复杂度,在做许多题目时,为了方便我直接把函数放在for循环里用,就变成了O(n^2),导致程序效率极低。终于在一次TLE教训后经学长指正发现。

    错误:for(i=0;i<strlen(s);i++)

    改正:len=strlen(s);

               for(i=0;i<len;i++)

    经过了这次教训,我还想起来了之前百度之星某题用到过的sqrt函数。当时把sqrt放在循环里,效率低不说甚至WA。后来更正写法后,奇迹般地AC。

    错误:for(i=2;i<=sqrt(n-1);i++)

    改正:sq=sqrt(n-1);

               for(i=2;i<=sq;i++)

    2.校赛发现的坑点,32位环境溢出。int整型运算结果如果超出int范围,可能会报错。所以int参与的计算应避免超出int范围,或者统一设置成long long类型。(凡是有 long long参与的比较或运算,最好统一long long单位)

    printf("%lld",100000*100000);

    显示的并非正确结果。同样

    错误:for(int i=1;i*i<=10000000000;i++)    //10^10

    改正:for(long long i=1;i*i<=10000000000;i++)

    3.多校发现的巨坑。。数组下标越界。在编译器正常跑(强大容错),但评测机遇到越界就停止,输出不全造成WA。结果就一直怀疑思路的错误,越走越远。。

    一定注意边界条件的处理。

    4.codeforces教训。尽可能用多组输入,避免题目没明确要求。

    5.codeforces教训。题目给出T>=1(没给出上界),n的和不超过10^6。在每组T中,尽可能跑n遍,不要把整个数组扫一遍,否则TLE。(另memset实现比直接扫快一点

    6.HDU多校发现的玄学。HDU 6415dp时多维数组的状态要与多重循环的顺序保持一致,否则T...

    7.网络赛没思路也要暴力一发,说不定就过了。。(数据大水)

    8.set,pair等都可用map替代。pair一般不要使用,效率极低。

    9.Java递归效率低,递归太深会报异常,尽可能减少递归使用或用循环代替

    后续更新。。

  • 相关阅读:
    jmeter----Linux上安装与使用
    Jmeter----客户端内存配置修改(Windows)
    Jmeter----生成HTML性能测试报告(Windows)
    nginx
    夜神模拟器 该网站的安全证书有问题 转载:https://bbs.yeshen.com/forum.php?mod=viewthread&tid=8864
    redis慢日志
    Nginx 转载:https://blog.csdn.net/yujing1314/article/details/107000737
    top 转载:https://mp.weixin.qq.com/s/kEY1U-CGIqQ2mKbr1aG8mA
    高可用
    shell 脚本 转载:https://mp.weixin.qq.com/s/rTsLIb2p-AE3oDPQXMQmLw
  • 原文地址:https://www.cnblogs.com/yzm10/p/7402140.html
Copyright © 2011-2022 走看看