首页 > 其他分享 >注意事项

注意事项

时间:2023-12-19 11:56:35浏览次数:32  
标签:函数 线段 tree add 注意 注意事项 时候

在这里列举一些代码中经常出错的问题以及一些代码技巧。

  1. \(head\) 数组一定要初始化为 \(-1\)(如果死循环很有可能是这里的问题)

  2. 建图要考虑建双向边还是单向边。

  3. 有向图 \(Tarjan\) 的时候不要写成 if(u == dfn[u])

  4. 存图的数组要多开几倍。

  5. 函数名首字母尽量用大写,以防重名。

  6. 用 \(double\) 计算时一定要考虑精度问题,特别是二分的时候。

  7. 除 \(void\) 函数以外的函数一定要有返回值,特别是 \(bool\) 类型函数,不然会自动返回 \(0\)。检查返回值是否正确。

  8. STL 里的数据结构时间复杂度要带一个 \(\log\) 或者带一个常数,谨慎使用。

  9. 模 \(1e9 + 7\) 的时候不要写成了模 \(1e9+10\)。

  10. 直接枚举子集可能会 \(TLE\),可以这样优化for(int j = i & (i - 1);j;j = (j - 1) & i)

  11. 不要开 \(1e6\) 个 \(deque\) 然后喜获 \(MLE\)。

  12. 注意 \(memset\) 的用法,可能会 \(TLE\)。而且注意应该手动赋值还是用 \(memset\)。

  13. 用 \(sqrt\) 的时候,要注意精度误差之类的问题。

  14. 分块的时候注意是 \(i\) 还是 \(l\),是 \(i\) 还是 \(pos_{i}\),需不需要加/减懒标记。

  15. 分块的时候要分清自己要求的是块内的还是整个序列上的,需不需要减 \(lid_{i}\)。

  16. 写分块或者线段树的时候记得写 \(init\) 和 \(build\)。

  17. 线段树注意 \(pushup\) 和 \(pushdown\) 的位置,\(pushup\) 在 \(build\) 和 \(add\) 最后,而 \(pushdown\) 在 \(add\) 和 \(query\) 的中间。

  18. 注意计数题要不要取模,在什么地方取模,取模有没有取干净。

  19. 注意指针移动应该是 \(pos++\) 还是 \(++pos\)。

  20. 树剖查询和修改往上跳的时候是 \(u=fa_{top_{u}}\) 而不是 \(u = top_{u}\)。

  21. 线段树修改懒标记的时候应该 \(tree_{ls}.add+=tree_{id}.add\) 而不是 \(tree_{ls}.add=tree_{id}.add\)。

  22. 当线段树既要区间加又要区间推平的时候注意懒标记的处理。

  23. \(double\) 类型返回值的函数不要写成 \(int\) 了。

  24. 注意做除法的时候要不要保留小数,有没有保留小数。

  25. 线段树记得开四倍空间(除非是查理线段树)。

  26. 模拟退火用 \(exp\) 算接受劣解的概率的时候注意有没有算反,有没有 \(delta = 0\) 的情况.

  27. 模拟退火或者其它时候生成 \(1-n\) 中的随机数是 rand() % n + 1 而不是 rand() % n

  28. 不要将 \(==\) 写成 \(=\),否则会赋值。

  29. 注意循环层数很多时要分清楚下标到底是谁,\(i\) 还是 \(j\) 还是 \(k\),不要弄混了。

  30. 按照双关键字排序的 \(cmp\) 函数是 y < t.y 而不是 x < t.y

  31. Atcoder 以及一些其它比赛不能用 \(size\) 作为变量名,会 CE。

标签:函数,线段,tree,add,注意,注意事项,时候
From: https://www.cnblogs.com/Creeperl/p/17913375.html

相关文章

  • 物流运输CRM:功能和使用注意事项
      很多物流行业的企业主都有这样的烦恼:客户来自各行各业,很难细分管理;业务量大庞大,工作很难细化;客户满意度低,缺乏售后跟踪......如果您也面临相同的问题,那么该让CRM管理系统登场啦!下面说说,物流运输行业CRM系统有什么作用?1、客户分类管理物流运输行业的客户涵盖了各个领域,不同......
  • CH390使用注意事项
    关于CH390使用注意事项CH390替换DM90xx硬件注意事项1、CH390L替换DM9000AVDD33的对地电容建议1uF贴近芯片放置,42脚为主电源AVDD33需10uF并联0.1uF。各AVDD33需分别接电容,供电电压都为3.3V;AVDDK和DVDDK需要分别外接电容并贴近芯片放置。两个AVDDK引脚建议任选一个外接1uF,另一......
  • 全栈开发中的安全注意事项:最佳实践和工具
    安全性是当今数字环境中最重要的问题,而在全栈开发中这一点尤为重要。当企业努力创建强大且动态的应用程序时,他们必须应对复杂的安全威胁领域。在本文中,我们将探讨开发人员可以用来确保安全的全栈开发环境的最佳实践和工具。1.1全栈开发的定义在深入研究安全考虑因素之前,我们先澄清......
  • Java定义类的参数时的一个注意事项
    我在做CS61B21sp的lab7时,为了实现BSTpublicclassBSTMap<KextendsComparable<K>,V>implementsMap61B<K,V>{}定义了一个类privateclassNode<K,V>{privateKkey;privateVvalue;privateNode<K,V>left,......
  • Modbus转Profinet网关的配置步骤和注意事项
     Modbus转Profinet网关的配置步骤和注意事项当拿到Modbus转Profinet网关(XD-MDPN100/200)不会配置或是配置完成后发现Modbus转Profinet网关(XD-MDPN100/200)与设备通讯不上等问题。下面就这些问题给大家详细解读。 首先,确保Modbus转Profinet网关(XD-MDPN100/200)的电源连接正常。检......
  • jmeter取样器写脚本注意事项
    一、服务器名称或者ip不能带有/线,如https://www.baidu.com,域名只能写www.baidu.com,否则网络不通,访问会失败 二、端口正常填写即可,路径只能写域名后面的路径,如http://1.1.1.1/futere/lopen-pai/register只需填写/futere/lopen-pai/register,否则有可能访问不通 三、参数项......
  • 出差 交通 暴雪天气 注意事项
      开车,走路须小心,减少出行。大车多,这个地方。 雪下了几天,就容易出现这种半冰的状态。刚下雪不容易出现。    erwa.cn二娃备忘 ......
  • 【Python爬虫】Python爬虫入门教程&注意事项
    ​一、引言        随着互联网的快速发展,网络数据已经成为人们获取信息的重要来源。而爬虫技术作为获取网络数据的重要手段,越来越受到人们的关注。在众多编程语言中,Python因其易学易用、库丰富、社区活跃等优势,成为爬虫开发的首选。本文将带你走进Python爬虫的世界,让你......
  • DBeaver 中使用 LightDB 匿名块的注意事项
    DBeaver中使用LightDB匿名块的注意事项DBeaver是一款开源的通用数据库管理工具,本文介绍DBeaver执行SQL时会遇到的坑。背景DBeaver是一款开源的通用数据库管理工具,LightDB官方推荐使用DBeaver作为图形化客户端工具,配置方法可参考这篇博客。很多同学对DBeaver不......
  • Kafka集群搭建、注意事项及示例
    1.安装Zookeeper:Kafka依赖于Zookeeper来进行集群协调。确保安装了Zookeeper,并配置好。2.下载和解压Kafka:从官方网站下载Kafka,并解压到所需的目录。3.配置Kafka:修改Kafka的配置文件以适应集群环境。主要修改server.properties文件,设置broker.id、listeners、zookeeper.c......