考前防脑瘫防挂分预防针

熟背以下板子,并在考试开始时用 \(5min\) 写出来

一定不要忘记写文操!

加入编译选项:-std=c++14 -DDADALZY

#include <bits/stdc++.h>
using namespace std;
template<typename T>
inline void read(T &x)
{
    char ch,sym=1;x=0;
    while((ch=getchar())<33);if(ch=='-')sym=-1,ch=getchar();
    for(;ch>='0' && ch<='9';x*=10,x+=ch-'0',ch=getchar());
    x*=sym;
}
template<typename T>
inline void write(T x)
{
    if(x<0) putchar('-'),write(-x);
    else    { if(x>9)write(x/10);putchar(x%10+'0'); }
}
template<typename T>
inline void writesp(T x){ write(x),putchar(' '); }
template<typename T>
inline void writeln(T x){ write(x),putchar('\n'); }
void fileIO()
{
#ifndef DADALZY
    freopen("*.in","r",stdin);
    freopen("*.out","w",stdout);
#else
	
#endif
}

int main()
{
    fileIO();

    return 0;
}

做题策略

  • 一定先看完所有的题,挑最简单的开始;

  • 一定不要在一道题上连续肝两小时以上;

  • 一定要思考两次之后才写代码,正确性第一;

  • 一定要把暴力分打满,能拿的分不能丢;

  • 因此在毙掉某些做法前一定要先看看可以拿多少分;

  • 如果一直想不出解法,需要及时转化生产动力,优化经济结构;

  • 错误的解法有可能加了特判之类的可以水过随机数据;

  • 一定要在 \(\text{NOI Linux}\) 上自测自己的代码。

一些套路

  • 树套树空间爆了考虑把内层换成平衡树;

  • \(DP\) 如果状态范围爆炸了可以考虑其反函数;

  • 树上数路径 \(\to\) 点分治;

  • 序列问题且数据范围 \(100\) 左右 \(\to\) 区间 \(DP\)

  • 有些操作在原序列比较难处理,可以考虑前缀和以及差分数组;

  • 数数题如果正着比较难 \(\to\) 反着来;

  • 数学题 \(\to\) 打表找规律;

  • DP 如果转移比较复杂 \(\to\) 考虑优化状态设计;

一些优化

  • 非递归函数随手加 inline

  • set \(\to\) unordered_set

  • set/mapcount() 方法判断键值存在会更好;

  • 清零不要什么时候都用 memset

易错细节

  • 分清 \(n\)\(m\),也不要搞混 \(i\)\(j\)

  • 不要什么都开 long long,但是要开的一定要开;

  • 当然有时候需要 __int128

  • 当然在某些函数传参的时候别忘了也需要 long long

  • 数组一定要开够;

  • 点分治的时候不要找完重心 \(rt\) 之后还是 dfs(v)。这虽然答案不会错,但是会全部 \(TLE\) 且难以察觉;

  • \(\text{Splay}\) 一定记得什么操作完都要把找到的最后一个节点 splay 到根。

原文地址:https://www.cnblogs.com/ExplodingKonjac/p/15560590.html