競技プログラマのためのC++作法
最近競技プログラミングを始める人が多いので、競技プログラミングにおけるC++の作法をまとめておこうと思います。
※この記事はネタです。注意してください。
#include <bits/stdc++.h>
すべての基本です。
using namespace std;
声に出して読んでみましょう。 古来から日本に伝わる美しいリズムを感じられると思います。
無駄なスペースは省く、大量のグローバル変数
コンテスト中は変数を宣言したりスペースをタイプしているヒマなんてありません。
使いそうな変数は全てあらかじめグローバルに宣言しておくとラクです。
使用例
int a,b,c,i,j,k,l,m,n,ans,tmp,hoge,fuga,piyo;
int x[10010],y[10010],d[110][110];
void solve(){
for(k=0;k<n;k++){
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(d[i][j]>d[i][k]+d[k][j])d[i][j]=d[i][k]+d[k][j];
}
}
}
}
マクロその1
マクロの基本中の基本です。
タイピング量を削減したりミスを減らしたりします。
使用例
#define fi first
#define se second
#define REP(i,n) for(int i=0;i<(n);i++)
using ll=long long;
using ii=pair<ll,ll>;
ll a,b,c,i,j,k,l,m,n,ans,tmp,hoge,fuga,piyo;
ii ps[10010];
int main(){
cin>>n;
REP(i,n)cin>>ps[i].fi>>ps[i].se;
}
マクロその2
既存の機能を上書きします。
エディタの一括変換などは使わずに、しっかりC++の機能を使いましょう。
使用例
#define int long long
#define endl "\n"
int a,b,c,i,j,k,l,m,n,ans,tmp,hoge,fuga,piyo;
signed main(){
int a=1e18;
cout<<a<<endl;
}
マクロその3
一流の競技プログラマーはtypoすら恐れません。
事前に想定済みです。
使用例
#define mian main
#define itn int
#define intt int
#define cotu cout
itn mian(){
intt a=10;
cotu<<a<<endl;
}
終わりに
他にも何かあったら教えてください。
僕は何を書いているんでしょうか……