zoukankan      html  css  js  c++  java
  • 2020 CSP-S2 & NOIP 2020 考试小错误总结

    因为博主是一个退役选手,所以有很多以前记得的细节,现在经常犯错,所以写下来留作复习。

    1. 树链剖分的(dfs2)的时候一定要判断(v)不等于(fa)还有(v)不等于(son[u])才继续走下去dfs2(v,v)

    2. 随机一个东西的时候代码前面一定要加上 srand(time(NULL));(win)机下测的时候要自己写一个大一点的(rnd),在(lin)机下测的时候一定要记得删掉,否则会不断出错。(对拍、随机化、(treap)都需要(rand))。

    3. (clock())返回的是以(ms)为单位的时间,是(double)

    4. 给一个结构体写 a[i]=(dt){read(),read(),read()}; 是正着的,即放进结构体里的东西是和输入同向的;
      给一个函数写 wrk(read(),read(),read()); 是倒着的,即放进函数的东西和输入是反向的。

    5. 快速幂,是 if (b&1) res=1ll*res*a%mod;,并不是判断(a)的奇偶性,而是(b)的。

    6. gdb 看数组的技巧
      有时候,你需要 查看一段连续的内存空间的值。比如 数组的一段,或是动态分配的数据的大小。你可以使用 GDB的“@”操作符,“@”的左边是第一个内存的地址的值,“@”的右边则你你想 查看内存的长度。例如,你的程序中有这样的语句:

       int *array = (int *) malloc (len * sizeof (int));
      

      于是,在 GDB调试过程中,你可以以如下命令显示出这个动态 数组的取值:

       p *array@len
      

      @的左边是 数组的首地址的值,也就是变量array所指向的内容,右边则是数据的长度,其保存在变量len中,其输出结果,大约是下面这个样子的:

       ( gdb) p *array@len
       $1 = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40}
      

      如果是静态 数组的话,可以直接用print 数组名,就可以显示 数组中所有数据的内容了。

    7. gdb 调试技巧:https://blog.csdn.net/mercy_ps/article/details/81542986 https://blog.csdn.net/qq_23225317/article/details/52757109

    8. 注意linux下的编译成的可执行文件没有后缀(.exe),想运行/打开一个文件的时候写 ./a

    9. 虚树的建树的四种情况分类,其中不能先弹栈再判 (st[pos-1]),要处理完再看弹/不弹栈,弹的话就是(LCA==st[pos-1]),那此时直接将栈顶弹掉就可以了,不弹的话就是 (st[pos]=LCA;)

  • 相关阅读:
    【BZOJ 1598】 牛跑步
    【SDOI 2010】 魔法猪学院
    【POJ 2449】 Remmarguts' Date
    【HDU 3085】 Nightmare Ⅱ
    【POJ 3635】 Full Tank
    【POJ 2230】 Watchcow
    USB设备驱动总结
    经典SQL语句大全
    float型数据与字节数组的转化
    linux下dmesg命令详解
  • 原文地址:https://www.cnblogs.com/Ronald-MOK1426/p/13912743.html
Copyright © 2011-2022 走看看