ABL Begginer Contestに参加しました
AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら
解いた/挑んだ問題
A問題
問題の概要
整数Kが与えられる
文字列"ACL"をK回繋げた文字列を出力せよ
制約
- 入力はすべて整数
どのように考えたか
文字列"ACL"をfor文でK回出力し、for文を抜けたら改行
結果
一発AC
・提出したコード
#include <bits/stdc++.h> #include <atcoder/all> #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) #define REP(i, n) for (long long i = 1; i <= (long long)(n); i++) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() using namespace std; using namespace atcoder; using ll = long long; using pi = pair<int, int>; const ll INF = 1LL << 60; int main() { int k; cin >> k; string a = "ACL"; rep(i, k)cout << a; cout << endl; return 0; }
普段どうりのA問題で安心した
ACまでの時間
ACしたのはコンテスト開始から1分後です。
B問題
問題の概要
A以上B以下の数列SとC以上D以下の数列S´がある
SとS´に共通する整数は存在するかどうか
制約
- 入力はすべて整数
どのように考えたか
CがA以上B以下 または、AがC以上D以下の場合存在する
結果
一発AC
提出したコード
#include <bits/stdc++.h> #include <atcoder/all> #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) #define REP(i, n) for (long long i = 1; i <= (long long)(n); i++) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() using namespace std; using namespace atcoder; using ll = long long; using pi = pair<int, int>; const ll INF = 1LL << 60; int main() { ll a, b, c, d; cin >> a >> b >> c >> d; bool ans = false; if (a <= c && c <= b || c <= a && a <= d)ans = true; if (ans) { cout << "Yes" << endl; } else { cout << "No" << endl; } }
ノートに書いてやったらスムーズに解けた
ACまでの時間
ACしたのはコンテスト開始から4分半後です。
C問題
問題の概要
N個の都市とM個の双方向道路があり道路iは都市AとBを結んでいる
道路で直接結ばれていない都市間に道路を作る操作が与えられる。
全ての都市から全ての都市に道路を辿ることが可能になるまで最低限必要な操作回数は何回か
制約
- どの二つの道路も同じ都市のペアを結ばない
- 入力はすべて整数
どのように考えたか
ACLのDSUを使って連結させ、連結成分の個数を求め-1を出力する
結果
一発AC
・提出したコード
#include <bits/stdc++.h> #include <atcoder/all> #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) #define REP(i, n) for (long long i = 1; i <= (long long)(n); i++) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() using namespace std; using namespace atcoder; using ll = long long; using pi = pair<int, int>; const ll INF = 1LL << 60; int main() { int n, m, a, b; cin >> n >> m; dsu d(n); rep(i, m) { cin >> a >> b; a--, b--; d.merge(a, b); } auto g = d.groups(); cout << g.size() - 1 << endl; }
直前に勉強していたことが出たので解けた
ACまでの時間
ACしたのはコンテスト開始から11分後。
結果
コンテスト結果
ABCの3完でした。
ACLを使用するコンテストと聞いていたので、身構えていたがABは案外簡単でよかった
パフォーマンス、レーティング変動
今回のパフォーマンスは1071、前回より900も上がりました。
レーティングはそれに伴い+68の606となりました。