zoukankan      html  css  js  c++  java
  • 【ACM】c++在oj上做题时遇到过的坑

    前言:这里每个坑都用了我超过1个小时,好多水题都是因为这些小坑卡了1个小时,贼气

    没办法,coding能力比较弱。记下来这些教训,也让后人也看看,避开一些坑。不定期更新

    最后更新日期:2018-08-01

    1.cincout太慢导致超时

    找了很久,发现要两个命令一起用。

    ios::sync_with_stdio(false);
    cin.tie(0);   

    2.变量定义的问题(全局,局部)

     开始acm道路之后,我习惯了把很多变量放到全局变量,省去函数之间引用传递的麻烦,

    需要初始化的时候用memset,这个做法方便但其实有不安全的地方。

    那就是递归函数!因为在递归函数中,某个变量在某次递归中都有一个值,可是如果

    将它声明为全局变量,那该变量就不随着递归函数而改变,从而导致同样的代码,

    函数内使用局部变量的代码A了,而全局变量的WA了。

    3.用优先队列的时候,“greater<typename>”与 “>”中间要有一个空格,这个坑只花了我3秒

    4.在结构体、类中需要储存字符串的时候,可能导致的内存溢出错误(RE)

    我们知道,可以用 string=char[]来初始化字符串。于是有次做字典树,用节点储存一个字符串,我在节点中声明了

    个string变量,在insert的时候先new node(),然后直接让string=char[]导致RE。这是因为new的时候不知道

    string占用的空间大小所以没分配(推断,应该是),解决方法,不要在node结构体/类中声明string,

    而声明char* val; 在需要赋值的时候,使用以下代码来将字符串储存到节点中。

    1     p->val = (char*)malloc((strlen(v)+1)*sizeof(char));//p是指向node的指针,v是待储存的字符串
    2     strcpy(p->val,v);
  • 相关阅读:
    hdu 1269(tarjan)
    hdu 1281(二分图最大匹配+枚举)
    CodeSmith学习笔记
    记录一个JQUERY模仿序列号输入
    jQuery Tips(5)关于伪类选择符
    PowerDesigner设置Table的默认属性值(字体颜色,大小,主键颜色等)
    使用UpdatePanel时触发JS的方法
    在C#中使用owc11 画折线图 .
    邮件发送错误解决一例
    ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片
  • 原文地址:https://www.cnblogs.com/VsKendo/p/9360908.html
Copyright © 2011-2022 走看看