- 这里收录了一些本人犯过的弱智的、意想不到的错误,供后人参考
解题策略,时间安排!!!#
- 除了T1,不要把过多的时间放在某道题的某个数据点上,即使你认为很正确
- 根据数据点多写几个数据分治
无向图双向存边时,边数组开边数的二倍空间;常见递归线段树开4倍空间!#
- 数组开小会越界,开太大则可能MLE
- 这是一位被警示的后人
注意较大数组尽量不要开在栈上#
- 即使题目给的内存为512M,也要注意运行环境的栈大小
- 比如开[1001][1001]的矩阵,尽量放在全局或在堆上分配
- 具体见C++数组太大时报错问题
模数加const,不然可能会超时#
- 固定模数写成编译期常量后,编译器可以优化取模运算,用乘法、移位等代替除法;是否提速取决于编译器和优化设置
- 洛谷P5175 数列
记得开long long#
#define ll long long
//use long long!!!
//use long long!!!
//use long long!!!
对于数据比较BT的题,记得开__int128#
注意大括号匹配!!!——NOIP2022篇#
- 特别离谱的错误
- [NOIP2022] 种花
- 因为这道题痛失NOIP2022的1=
- 别问我为什么NOIP2022 T1只拿了1分
- 我当时的代码是这么写的
int main(){
读入t
循环t次{
读入每组数据
}
处理数据并输出(这里只处理了最后一组数据!!!)
}
- 然后就只输出了最后一组数据的答案
- 最后这题给了我1分,用于嘲讽我 答案错误99%
注意大括号匹配!!!——2024年10月洛谷月赛篇#
- 没错,在两年之后,我又犯了大括号的错误……
- 但是和两年前是反过来的
- 两年前,T1因为把输出每组数据的结果放在了循环外面,直接痛失1=
- 两年后,10月月赛,T1因为把统计总个数放在了循环里,每次循环都输出了一下总数
- 我和大括号有仇
for (ll i=0;i<k;i++){
读入
if (y>=x){
tot++;
}// <- 我以为这个大括号是结束循环
printf("%lld",tot);
//然后就在这里输出总数了
}
注意大括号匹配!!! ——嵌套if篇#
- if(){}else{}嵌套不加括号导致外层的else匹配到里层的if
- 查很久查不出来错哪,还是调试调出来的
你写的代码:
if (a)
if (b)//里层if
c=1;
else d=1;//你以为是外层if的else
实际执行的:
if (a)
if (b)//里层if
c=1;
else d=1;//里层else
多测不清空#
//clear!!!
读题时,看清楚谁比谁大——初赛篇#
将第 10 行中的 > 替换为 >=,那么原输出与现输出的大小关系为()
- 分析后易知,替换后答案大于等于原答案,但不一定严格大于
- 但是,题目问的是原答案和替换后答案比,主语是原答案,所以应该选“一定小于等于且不一定小于”
- 离谱
读题时,看清楚谁比谁大——程序篇#
-1,如果它小于答案。
1,如果它大于答案。
- 是“它小于答案”,而不是“答案更小”
- WA了5次才发现
__int128手写输出函数或快速输出函数,特判:0#
- 太弱智了
- 否则什么也不输出
- 浪费我洛谷一次每日数据下载次数。。。
过大的long long 乘long long,记得用龟速乘!#
离谱的非ASCII符号#
- 从CSP2024比赛题目里复制出来的样例,TMD是非ASCII的负号
- 比赛的时候查程序查了快半个小时才发现
- 直接从下发数据中复制,不要从题目文档里复制
看清题目问啥!!!#
- CSP2024 T2 第二小问
- 问的是:在不漏掉原本能检测到的超速车辆的前提下,最多能关闭多少摄像头。先用已有摄像头覆盖这些车的超速检测区间,求最少保留个数,是根据车选摄像头,用右端点排序贪心;最后用摄像头总数减去最少保留个数
- 而我做成了:覆盖所有摄像头的最少区间数,根据摄像头选车…………
- 我的评价是:倒反天罡