首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【算法竞赛】错误&技巧

【算法竞赛】错误&技巧

作者头像
Livinfly
发布于 2023-01-10 07:03:17
发布于 2023-01-10 07:03:17
4670
举报
文章被收录于专栏:LivinflyLivinfly
  • 邻接表,h[]忘记初始化。多组数据时,idx未初始化(会造成数组越界)
  • 当使用并查集时,注意自己写的并查集是不是fa[x]随时都是x的祖宗,若不是,记得要用GetFa(x)
  • 变量名有冲突y1, next, prev, has ...
  • 在特别情况下.size()和int整型变量比较时会出错,所以尽量保证式子的运算结果是正数,因为如果是负数,unsigned int类型的变量会变成超大的正数。
  • priority_queue 默认是大根堆 < Type,vector,greater >是小根堆
  • 图论采用虚拟源点时,注意点和边数组的大小
  • double类型存在精度误差,尽量不用==判断
  • 在函数中引用数组时,用memset() sizeof 传入的数组 是不对的。
  • 线段树要开4倍N
  • 二分注意二分的数值的大小可能要开LL, mid同理
  • dfs or ... if 先判断数组的下标会不会越界再判数组的值
  • 字符串不要memset
  • &的优先级比==高
  • 尽量不要相似的代码复制粘贴,很容易出错然后又不知道错在哪
  • map类型, 直接用mp[str], 它自动就插入里面了, 也就是说判里面没有这个元素必须要用mp.count(str) == 0!!!
  • static 慎用!!! static cnt = 0; 这里赋值只会在第一次有效
  • 字串一般是连续的, 子序列一般是不连续的
  • DP的最终答案, 要看状态表示是什么, 题目要求是什么, 不总在最后一行, 如这题这种找到一个区域, 最大值可能出现在中间, 枚举答案要全部枚举一遍或者, 边...边更新!!!
  • 强制转类型(LL)a*b+c*d会存在问题, 类型强制转换貌似是还是先按照运算顺序进行, 然后LL和int操作结果是LL,这个写法只转了a的类型.(LL)(a*b+c...)这样只是改变了括号里一坨的计算完的数据的类型.
  • 答案确定了,但是数据没有读完,直接solve函数return;了。(POJ2492
  • 自己分类,情况都要走的话,不要if里面直接continue;(HD1198
  • 读入int,LL = int*int,还是会溢出的。CF1720A
  • ^的优先级比<高。(没事多加括号((
  • 树状数组配上离散化,离散化下标要从1开始...不然死循环
  • c++20好像不能cin >> str+1; (char*)可能还是要用scanf("%s",str+1);
  • cout << fixed << x <<'\n'; (不加fix会存在科学计数法, xls血的教训)
  • rbegin()是完全反的迭代器,也是用++ 正常遍历(反向)的。
  • sqrt在自动下取整时候,因为是浮点数有误差,建议如果要求下取整等整数情况,自己手搓二分求解!!悲惨的fst
    • upd,可以sqrt(n)+0.1或者先求sqrt() 然后while来做偏移
  • LL的时候for循环的变量也看看
  • 对有除法的式子取模,最好先找到逆元,不然转__int128。例子
  • 需要对分别找多个数的因子进行计算,可以用线性筛的方式,找到每个数的最小的质因子,然后通过,边求因子,边除掉对应的最小质因子。例子
  • 正确答案在int范围,但可能答案在LL范围,取最小值时由于爆int而变为负数,错误。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年01月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【算法竞赛】愚蠢的错点
邻接表,h[]忘记初始化。多组数据时,idx未初始化(会造成数组越界) 当使用并查集时,注意自己写的并查集是不是fa[x]随时都是x的祖宗,若不是,记得要用getfa(x) 变量名有冲突y1, next, prev, has ... 在特别情况下.size()和int整型变量比较时会出错,所以尽量保证式子的运算结果是正数,因为如果是负数,unsigned int类型的变量会变成超大的正数。 priority_queue 默认是大根堆 < Type,vector,greater >是小根堆 在自己写的函数里引
Livinfly
2022/10/26
2970
算法基础学习笔记——⑫最小生成树\二分图\质数\约数
罗列出每个数,依次删除每个数的倍数,剩下的数就是质数,可以对此进行优化,可以不删每一个数的倍数, 可以只删质数的倍数,这样就不用重复删。
命运之光
2024/03/20
1220
算法基础学习笔记——⑫最小生成树\二分图\质数\约数
【算法竞赛 - 搜索】Eight II
只是缺少了始末状态一致的数据,导致我血压高了几小时。(和标程对拍没有问题,交上去就WA)
Livinfly
2022/10/26
2280
【算法竞赛】AtCoder Beginner Contest 284 D, F
赛时并没有意识到枚举范围在三次根号n里,加上自己手写的二分sqrt挂了(丢人),一直没过去,后面把sqrt部分改好也就过了。
Livinfly
2023/01/08
3300
高级数据结构:带边权并查集&拓展域
作为家喻户晓的并查集,运用简单的几行代码就实现了多个数据间从属关系的高效维护和查找。最基本的并查集没啥好说的了,定义一个fa数组表示x的父亲,初始化所有数据一开始的父亲是自己,然后就是查找和合并的操作,自认为最简单的模板见下:
Here_SDUT
2022/08/08
1.2K0
高级数据结构:带边权并查集&拓展域
补题A-E Codeforces Round 953 (Div. 2)
假设每个点都投资1元,对于a[i],投资1元的期望收益是a[i]/n,总的期望收益是sum(a)/n。
WuShF
2025/02/26
991
补题A-E Codeforces Round 953 (Div. 2)
2018年第九届蓝桥杯B组题解
按着题目把这些数转换成8字节的二进制数就可以了,负数的二进制是补码。可以自己写个函数实现一下,实际效果图:
Ch_Zaqdt
2019/01/10
3K0
【算法竞赛】Namomo Winter 2023 Day 3 Div 2
Dashboard - 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest - Codeforces
Livinfly
2023/01/11
3660
树状数组-从入门到拓展(转载非原创)
转载来源:https://www.cnblogs.com/AKing-/p/15311440.html
xlj
2021/09/20
4650
LeetCode周赛290,什么?你不会树状数组,这太不公平了
我们老规矩来看LeetCode周赛第290场。这一场比赛的赞助商是华为,应该说是目前为止赞助商当中规模最大的公司了。
TechFlow-承志
2022/09/21
5120
LeetCode周赛290,什么?你不会树状数组,这太不公平了
LeetCode第333场,第二题差点没做出来是几个意思……
这次的赛题难度稍大,多花了点时间……照惯例咱们来聊一聊上周的LeetCode周赛,这一次是第333场。由佳期投资赞助,并且前100名的同学可以获得简历直通的机会。这已经好久没有出现了,算是市场行情的一个参照物吧。
TechFlow-承志
2023/03/02
5330
LeetCode第333场,第二题差点没做出来是几个意思……
【算法竞赛】水CF构造题
我太弱了,水水构造tag的题去。 大概只写写思路(毕竟构造题) 打*的是自己想没直接出来的。 发布时间,最早为20220814-14:14,现在为最新水题时间。
Livinfly
2022/10/26
4900
《算法竞赛进阶指南》0x14 Hash
与离散化思想类似,当我们要对若干复杂信息进行统计时,可以用 Hash函数 把这些复杂信息映射到一个容易维护的值域内
一只野生彩色铅笔
2022/10/31
1.8K0
LCS、LIS、LICS算法
给定两个序列 ,设 为 的长度,其中 分别表示 从首元素到第 i 个元素的一段、 从首元素到第 个元素的一段, 分别表示 中第 i个元素、 中第 个元素,序列 和 的长度分别为 和 。则 的状态转移方程为:
hotarugali
2022/03/01
8840
程序员进阶之算法练习(六十五)
题目链接 题目大意: 给出n个整数和整数x,问能否找到一个顺序: 按照这个顺序累加数字,中间不会出现数字和等于x; 已知n个整数互不相同。
落影
2022/09/23
1710
算法竞赛偷分技巧
读取第k位:a>>k&1读取第k位并取反:心a>>k&1将第k位清0:a&=(1<< k)将第k位置1:a|=1<< k将第k位取反:a^=1<< k将第k1~k2位反转:a^=((1<< (k2-k1+1))-1)<< k2是否恰好只有一个true:!(x&(x-1))&&x判断是否有两个相邻的true:X>>1&X是否有三个相邻的txue:X>>1&X>>2&X
用户11062199
2024/06/19
1370
《算法竞赛进阶指南》0x18 总结与练习
这一天,刚刚起床的达达画了一排括号序列,其中包含小括号 ( )、中括号 [ ] 和大括号 { },总长度为
一只野生彩色铅笔
2022/10/31
9940
《算法竞赛进阶指南》0x18 总结与练习
《算法竞赛进阶指南》0x24 迭代加深
这种策略带有一定的缺陷:如果搜索树每个节点的分支数目非常多,且问题的答案在某个较浅的结点上,如果深搜在一开始选错了分支,就可能在不包含答案的深层次树上浪费许多时间
一只野生彩色铅笔
2022/10/31
8440
Codeforces 的题目真的值得算法竞赛选手训练吗?
个串,有两种操作,一种是给某个串加一个字符,另一种是求存不存在一个串是查询串的子串。强制在线。
ACM算法日常
2021/11/10
9780
wz刷题汇总
个人刷题记录(不完全) cf-contests 存一些让我再写不一定写得来的或者我可能去扒原题的? 1202D d3线下想的数学题 1214D dfs可以搞 两次dfs 第一次把走过的路堵上(“D不是
wenzhuan
2022/08/15
4000
相关推荐
【算法竞赛】愚蠢的错点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档