Escribir código más rápido durante la programación competitiva en C++

Este artículo se centra en cómo implementar sus soluciones e implementarlas rápidamente mientras realiza una programación competitiva.

Configuración Consulte Configuración de un entorno de programación competitivo de C++

Fragmentos Fragmento es un término de programación para una pequeña región de código fuente reutilizable. Muchos editores de texto modernos como Sublime le brindan una funcionalidad para escribir automáticamente un fragmento predefinido simplemente escribiendo una palabra clave. Uno puede acelerar su implementación usando Snippets. Entonces, si necesita hacer un BFS o DFS (o cualquier otro código), solo necesita presionar ‘Palabra clave + Tabulador’ para obtener su código.

Cómo agregar un fragmento Agregar un fragmento en Sublime Text es bastante sencillo. Simplemente vaya a Herramientas>Desarrolladores>Nuevo fragmento.

<fragmento>
<contenido><![CDATA[

// Escriba su código aquí

]]></content>
<tabTrigger>INGRESE LA PALABRA CLAVE AQUÍ</tabTrigger>
</snippet>

Use esto como su plantilla base para un fragmento y pegue el código que desea usar en su fragmento reemplazando el comentario y la palabra clave de activación.

Macros
Son una forma de asignar notaciones más cortas a cosas que normalmente son más largas de escribir.
Se pueden escribir fácilmente usando #define.

Ejemplo 1:
Antes de usar Macros:

long long int a;
vector<long long int> v;
map<long long int, long long int> mp;

Después de usar macros:

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

Ejemplo 2:
Antes de usar Macros:

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;
    }
}

Después de usar macros:

// 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;
    }
}

Ejemplo 3:

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

después de :

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

Nota: escriba sus macros al comienzo de su código (consulte la plantilla que se proporciona a continuación).

Usar una plantilla
Usar una plantilla es una de las mejores ideas para acelerar su implementación. Mantenga su plantilla lista que ya tiene sus macros escritas. Esto ayuda a reducir una gran cantidad de tiempo que, de otro modo, se habría dedicado a escribir todo el código desde cero.
Yo uso la siguiente plantilla, puedes usar la que más te convenga.

#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<int> vi;
typedef pair<int, int> 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;
}

Gracias por leer, por favor avíseme si tiene alguna posible mejora o adición.

Publicación traducida automáticamente

Artículo escrito por PulkitMathur1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *