超初心者が競プロに挑む

初心者からの競プロ練習記録

ARC

ARC073Eメモ

ARC

ARC073Eで気になるところをメモ A,Bという同じ長さの配列がある時に、あるiでA[i]とB[i]を入れ替えるという操作を繰り返して A中の最大値と最小値の差を最小化するという時のアルゴリズムのこと 例 A=[8,4,4,4,1] B=[4,0,0,0,4] Aの最大値と最小値の差は8-1=…

ARC018C解いてみた

ARC

見てもわからず、答えを見て実装してみました。 なお、この手のの漸化式による、乱数生成法を線形合同法と呼びます。 #include <cstdio> #include <cstdlib> #include <vector> #include <utility> #include <algorithm> #define AT(x,y) ((x) * M + y) using namespace std; typedef pair<int,int> P; typedef pair<int,P></int,p></int,int></algorithm></utility></vector></cstdlib></cstdio>…

ARC017C解いてみた

ARC

久しぶりに自力で解ける問題見つけました。蟻本の類題ですね! このように集合を半分に分けて列挙して答えを求めることを半分全列挙と呼ぶらしいです。 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; int BucketA[(1<<16) + 10]; int BucketB[(1<<16)</cstring></algorithm></cstdio>…