Mistakes(Updating)

本文总结了编程中常见的36种错误及其解决方案,包括数组溢出、整数溢出、精度问题、边界条件处理等,帮助读者提高编程效率,避免常见陷阱。

1.当调试时发现无法正常调用函数时,检查是否发生爆栈

   对于每个栈仅有4MB的空间,开int只能开大约5*10^5。

   大数组一定要开全局变量

 

2.当long long=int*int时会爆int,一定要注意

  在进行long long计算时,最好全部开成long long ,或加上1LL

 

3.vector.size()的类型为unsigned int

  当用其做减法时一定要注意边界条件,防止差小于0溢出

 

4.在求特殊最值时,一定要特殊定制初始化值,不能套用平常初始值,防止初始值不够

   Ex:1<<30 > 1e9

 

5、由于返回类型为int和bool的默认返回值是1,因此有些时候要注意在函数结束前return false.

 

6、注意计算几何的精度问题,要比答案多算2到3位,否则可能WA

      (Codeforces 8D)

 

7、注意模数不能为零

      当p mod q时要对q=0时特殊处理

      (Codeforces #480 A)

 

8、注意答案的大小写

(BZOJ 2964)

 

9、scanf("%c)和getchar()有相同的问题:会读入\n等缓冲区的遗留字符

尽可能的用char数组和scanf("%s")的组合

(BZOJ 2819)

 

10、在写Trie树时,CNT的初始化要根据根节点数目而定

如果有n棵树,则CNT要初始化为n+1

 

11、在线性基求XOR最大值时

如果res初始值不为0,不能对线性基中的1直接添加,而要使用MAX逐个判断

 

12、如果在读入long long 时使用IO优化

       read()中的INT要改为LONG LONG!!!

 

13、注意x组成y至少要多少个这类问题的书写:

y=y/x+(y%x>0)   ||    y=(y+x-1)/x  (不要漏>0

 

14、有多个括号要留心每个括号的位置啊,多看几遍

while((f=dfs(S,T,INF))>0)

这里的>0一开始放到第2个括号里了,结果f每次就都是0或1了……囧,调了1h

 

15、像网络流这样执行过一边就会对原数组产生影响的模块,

         执行过一次后想调试/再次调用时,不能再执行一遍

 

16、由于模板中大部分数据都是int,如果有long long时要特别注意修改原模板中的int

        惨案:

void add_edge(int from,int to,ll cap)

 

17、如果题目中涉及连续相乘且不取模,注意是否需要高精度

 

18、Big Integer模板类中牢记存储顺序是从低位到高位的

重载>时要从后往前判断

 

19、能用int计算不用long long,在32位机下,int比long long 快几倍

 

20、求SG函数时,初始值最好都设为0,防止异或-1这种情况

如果使用$vis$数组也一定要第一时间更新,防止陷入死循环

 

21、对变量初始化的先后顺序要注意

EX:cur=0要在st[cur][1]之前初始化

 

22、哈希表最好用链式前向星实现

$vector.clear()$太慢了!

 

23、左移、右移比==优先级高,但位与、位或比==优先级低

 

24、树状数组$Query$中的$ret$记得初始化!!!

 

25、如果$dp$时一开始状态无法填满,选择 一开始特殊处理从0开始循环 !

 

26、如果数组下标中有运算,查看是否可能溢出,要开大数组

 

27、链式前向星实现的网络流算法的要点!

(1)$edge$数组的下标一定要从0开始,这样才能使得$edge[i]$与$edge[i^1]$互为反边

(2)由于上一条原则,$head$数组一定要初始化为-1,而不是-1与0皆可

 

28、突然发现自己以前点分治找重心都是假的……

然而复杂度被证明是正确的:传送门

不过最好在递归时$vsum=vsum-sz[x](e[i].to=f[x])$

 

29、$map,set$存结构体时要重载小于号

注意重载要写全(特判前面关键字相等的情况),否则前面相等时会有意外情况(不再插入)

 

30、OJ上交题前一定要检查是否删掉freopen!!!

 

31、哈希的值域一定要从1开始!!!有0明显会出错

(特别是字符串哈希)

 

32、注意三元运算符的优先级!!最好都加上括号!

 

33、不能只考虑是否爆$int$,对$1e18$的$longlong$运算时也要注意是否爆$longlong$!

 

34、注意多测且一边读入一边处理时要把数据读完,不能break!!!

 

35、线段树注意最后一层的更新,不能先$return$!

 

36、线段树询问时要保证询问区间和$[1,n]$有交!否则陷入死循环

转载于:https://www.cnblogs.com/newera/p/7896937.html

Oracle数据库中,`job_action` 参数是指定由调度任务(Job)执行的具体操作或命令的关键属性之一。它是`DBMS_SCHEDULER`包下用于配置各种类型的任务时需要设置的一个重要字段。根据不同的`job_type`,这个动作的表现形式也会有所不同。 ### PL/SQL块 (`PLSQL_BLOCK`) 当`job_type`指定为`'PLSQL_BLOCK'`时,`job_action`应该包含一条完整的匿名PL/SQL程序段落,即以`BEGIN...END;`包围起来的代码片段。这通常用来直接运行一段内联的小规模逻辑、查询或者调用现有的存储过程等功能。 **示例:** ```sql job_action => 'BEGIN my_package.my_procedure(p_param => ''value''); END;' ``` ### 存储过程 (`STORED_PROCEDURE`) 对于选择了`'STORED_PROCEDURE'`作为`job_type`的情况下,`job_action`只需指出目标方案下的特定存储过程名称即可,并不需要额外包裹语法结构;不过如果有参数传递需求的话,则需利用附加机制——比如通过`number_of_arguments`配合一系列`argument_value`选项来完成。 **示例:** ```sql job_action => 'my_schema.some_stored_procedure' ``` ### 批处理脚本或其他外部程序 (`EXECUTABLE`) 当设定`job_type='EXECUTABLE'`时,意味着你计划启动操作系统层面的应用或脚本文件。这时`job_action`就代表了待执行的二进制路径或者是解释型语言源码的位置标识符。 **注意**: 使用此模式前,请确认相应的环境变量已经正确设置了并且有足够的权限去访问所需的资源。 **示例:** ```sql job_action => '/usr/local/bin/my_script.sh' ``` 除此之外还有其他几种不太常用的`job_type`以及相对应的动作格式,具体取决于用户的需求和应用场景。总之,在设计自动化运维流程或是定时触发业务规则变更的过程中,“动作”本身往往承载着核心意义,因此合理规划其内容至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值