📜  在C++中的竞争性编程过程中更快地编写代码

📅  最后修改于: 2021-05-30 04:14:25             🧑  作者: Mango

本文重点介绍如何在执行竞争性编程时实现解决方案并快速实现它们。

设置请参考设置C++竞争性编程环境

片段片段是一个编程术语,指的是一小部分可重用的源代码。许多现代的文本编辑器(例如Sublime)为您提供了一种功能,只需编写一个关键字即可自动编写预定义的代码段。可以使用片段来加快其实现。因此,如果您需要执行BFS或DFS(或任何其他代码),则只需按“关键字+标签”即可获取它的代码。

如何添加代码段在Sublime Text中添加代码段非常简单。只需导航至“工具”>“开发人员”>“新代码段”。

将其用作代码段的基本模板,并通过替换注释和触发关键字,将要使用的代码粘贴到代码段中。

巨集
它们是一种将较短的符号分配给通常需要较长时间编写的内容的方法。
可以使用#define轻松编写它们。

范例1:
在使用宏之前:

long long int a;
vector v;
map mp;

使用宏后:

// ll can be used instead of typing long long int
#define ll long long int
  
ll a;
vector v;
map mp;

范例2:
在使用宏之前:

for (int i = 0; i < N; i++)
    cin >> a[i];
  
for (int i = 0; i < N; i++) {
    for (int j = 0; j < M; j++) {
        cout << m[i][j] << endl;
    }
}

使用宏后:

// Use this macro instead of typing the whole
// for-loop syntax
#define FOR(a, c) for (int(a) = 0; (a) < (c); (a)++)
  
FOR(i, N)
cin >> a[i];
  
FOR(i, N)
{
    FOR(j, M)
    {
        cout << m[i][j] << endl;
    }
}

范例3:

vector v;
  
for (int i = 0; i < N; i++) {
    cin >> x >> y;
    v.push_back(make_pair(x, y));
}

之后

#define ll long long int
#define MP make_pair
#define pb push_back
  
vector v;
  
for (int i = 0; i < N; i++) {
    cin >> x >> y;
    v.pb(MP(x, y));
}

注意:在代码的开头编写宏(请参见下面给出的模板)。

使用模板
使用模板是加快实现速度的最佳方法之一。准备好已在其中写入宏的模板。这有助于减少您的大量时间,而这些时间本来是从头开始编写整个代码的。
我使用以下模板,您可以使用适合您的模板。

#include "bits/stdc++.h"
using namespace std;
#define max(a, b) (a < b ? b : a)
#define min(a, b) ((a > b) ? b : a)
#define mod 1e9 + 7
#define FOR(a, c) for (int(a) = 0; (a) < (c); (a)++)
#define FORL(a, b, c) for (int(a) = (b); (a) <= (c); (a)++)
#define FORR(a, b, c) for (int(a) = (b); (a) >= (c); (a)--)
#define INF 1000000000000000003
typedef long long int ll;
typedef vector vi;
typedef pair pi;
#define F first
#define S second
#define PB push_back
#define POB pop_back
#define MP make_pair
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int T;
    cin >> T;
    while (T--) {
        int N;
        cin >> N;
        ll a[N];
        FOR(i, N)
        cin >> a[i];
    }
    return 0;
}

感谢您的阅读,如果您有任何改进或补充,请告诉我。

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。