经常犯的sb错误、做题技巧合集

最近打比赛总是犯一些没有脑子的错误。
发现不好好总结一下,可能会经常犯。
而且还有些值得注意的地方。

Part 1

  • 打完题目一定要打对拍
  • Pascal选手千万千万注意——不要和C++选手玩时间,比暴力,不然会被爆艹一顿。
  • 在调试过程中,数组开小的一定要在交题时改回来。
  • 数组千万别开小。
  • 文件输入输出千万不要打错。
  • Pascal的setlength要尽量少用,及其的慢。
  • Pascal里字符串的比较(如s='abc',t='abd',if s=t then write('YES');)这种尽量少用。
  • Pascal一般见到树的大小超过200000即可打人工栈,当然,可以在递归过程中尽量不定义变量。
  • Pascal打完一定要保存,按F2
  • 用uses math库调试发现RE,要删掉后调试。不然一直会217
  • Pascal在215有时会报201
  • Pascal的硬核inline优化没有用
  • 一定要用极限数据测一测程序
  • 一定要开Long Long
  • 一定要小心MLE
  • 交题目一定要注意不能交错
  • 不会做的题目一定要打暴力,不能头铁正解或是放着不管。
  • 有些题目可以利用一个思想——正难则反
  • 不要理解错题意!不要理解错题意!不要理解错题意!
  • hash不一定要用记录数据的hash,有时双hash、三hash可能更优(看人品)
  • 看到前缀可以想到后缀,看到子序列(一定要区分连续的和不连续的)可以想到kmp。
  • 看到数位DP可以利用记忆化搜索的套路来做。
  • 一些毒瘤图论题,看到边数、点数不大可以想想网络流
  • 比赛见到计算几何千万别杠,不然会被反杠一顿。
  • 数据结构的题目不打对拍必定会挂。
  • 数学题——结论靠猜,证明靠拍
  • 一定要特判一些特殊情况。
  • 一定要将思路理清后才打。
  • 要坚信数据水,想到水法就抛硬币吧。
  • splay或spaly一定要记得时时刻刻update,不然不管是分数还是调试过程都会让人心态崩掉。
  • spfa它死了尽量不要用,可以用dij(虽然比较难打)
  • 对拍程序:(超级好用)
@echo off  
:loop  
    rand.exe>data.in  
    std.exe<data.in>std.out
    my.exe<data.in>my.out  
    fc my.out std.out  
if not errorlevel 1 goto loop  
pause  
goto loop

  • 多组数据一定记得清空
  • fillchar一定要注意时间,以免跑挂。
  • 肉眼查错误有时候会很优秀(可能会占用人脑资源)。

Part 2

转C++时间:
2019.8.1
接下来是C++专场

  • 赋值是=,判断是==。
  • 注意二进制操作的优先度是比+和-还有后的。
  • 注意i++和++i的区别。i++ :先引用后增加 。++i :先增加后引用 。
  • 一定一定一定要注意longlong和数组范围(数组范围是0~n-1)
  • 输入记得要加上“&”,输出不要加上。
  • 开了longlong一定要输入输出时打%lld
  • C++字符串最好利用字符数组。输入时这样输入:scanf("%s",ss+1);
  • Pascal中exit在C++中是return,halt是exit。break、continue不变。
  • 万能头文件(大比赛慎用):#include< bits/stdc++.h>
  • Ox(吸氧羊):
    __attribute__((optimize("-Ox")))//(把x换成1、2、3)
#include<cctype>
inline int read()
{
    int X=0,w=0; char ch=0;
    while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
    while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
    return w?-X:X;
}
  • register可以写在for语句中,一个硬核优化。
  • 是该学学C++自带的东西了。
  • C++除法慢,和%是一个级别的。
  • C++调试很恶心,肉眼查是必备的技巧。
  • 记得C++在主程序定义的变量与全局定义的变量不同。
    还有一个东西,石家庄O3!!!
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")

  • C++不要用什么奇怪的变量:int rank, time, tube, y0, y1,next;之类的。
  • long double 用%Lf
  • unsigned long long输出用%llu 读入的话用读优或cin吧。(cin >> A;cout << A;)
  • 实数判相等时一定要做差去绝对值。
  • C++开数组如果是[n][m],其中m<n时,可以这样:[m][n]来开。似乎空间寻址会快。(常数小优化,还比较有用)

Part 3

关于NOIP比赛策略的一二事(时间:2020NOIP退役赛前夜)

  • 一定要大脑清晰!一定要大脑清晰!一定要大脑清晰!
  • 一定要审清题目!一定要审清题目!一定要审清题目!
  • 一定要打满暴力!一定要打满暴力!一定要打满暴力!
  • 一定要心态平和!一定要心态平和!一定要心态平和!
  • unsigned long long的正确用法 (€€£不干人事)
  • 对拍的正确用法(也不知道暴力选手的我用不用得上)
  • “模拟不能算黑……黑题……NOIPT1的事,能算黑么?”
  • 不会做就打表!打完表就找规律猜结论!
  • 数学题就看灵性了,应该不会有什么奇怪的反演把~
  • 遇到不大会的题先去想想贪心、转化、构造,说不定就能从一些奇妙的结论中发现正解。
  • 实在不会就DP吧,NOIP打DP还是有前途的。
  • 打线段树就必须对拍,不对拍就是0分。
  • 写题前先把思路理在草稿纸上,以免越打越乱(尤其是模拟)
  • 上厕所有益身心健康。
  • 文件名、文件夹、我不要当要素过多人!一定要留下10~15分钟开始检查文件,以防爆炸。
  • 听说过程名%%队爷能够提高RP哦!
  • 切T1+T2T3T4高分暴力即可(T4一定有坑,切莫以为自己能够切掉)
  • 有一说一,不懂就问!
  • 不能相信大数据(你永远不知道出题人构造大数据的同时在做些什么)
  • 吃好睡好,考前别喝coffee。同时带上些巧克力,不仅能补充能量,还能放松心情,更可以馋哭隔壁的小朋友。听听纯音乐放松放松就上战场了吧。

小结:
最后一次停课,最后一次在比赛时怒敲键盘,最后一次对着题目感受时间的飞逝。
回想起第一次普及组比赛时的兴奋,懵懂无知;第二次提高组比赛时的紧张到碎不着;到现在的平静如水,好想放声大哭一场。
实力不行,省队什么的是奢望。现在我只想保存我那些日日夜夜在机房的欢声笑语在我心中。
最后一役,我将在寒风中怀抱温暖,放飞自我。
加油!NOIP2020!

原文地址:https://www.cnblogs.com/RainbowCrown/p/11166189.html