做题须知与禁忌

1. 多测(多组数据评测)

2. STL

3. 数据范围

4. 标准库与拓展库

5. 平台特性

6. 头文件

7. OI 赛场编译(转载自 LOJ 如何在不提供 NOIlinux 2.0 环境的考点避免编译错误

示例程序:

#include<bits/stdc++.h>

using namespace std;

namespace my_namespace{
    int main(){
        int a,b;
        cin>>a>>b;
        cout<<a+b<<endl;
        return 0;
    }
};

int main(){
    return my_namespace::main();
}

编译选项:

g++ a.cpp -o a -std=c++14 -O2 -Wall -fno-ms-extensions

8. 内存使用问题

通常我们申请新空间使用 new 而清理内存使用 delete。(还有一种使用类的方法,但我不记得了……)

但是!有时候 new 会增加不必要的程序占用空间,而据说这是内存碎片造成的。

当你的程序中 delete 可能用不到或者很少用的时候,也许开一个内存池更好(能够防止炸空间)。

比如:

class Node {
	Node() {}
}; 

Node *nodes;

Node* newNode() {return new Node();}

可以替换成:

class Node {
	Node() {}
}; 

const int MAXSIZE=1e6+6;
Node nodePool[MAXSIZE];
Node *poolPointer=nodePool;

Node* newNode() {return poolPointer++;}

这样就避免炸空间了。