ABC171に参加しました
AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら
解いた/挑んだ問題
A問題
問題の概要
英小文字か英語大文字が一文字与えられる
小文字なら'a'を、大文字なら'A'を出力せよ
制約
- 与えられる文字は('a' - 'z')もしくは、('A' - 'Z')のいずれか
どのように考えたか
文字をASCIIコードとしてみると、大文字のA-Zの後に小文字のa-zが出てくるので、
大文字のZより大きいか小さいかで判定
結果
一発AC
・提出ししたコード
#include"bits/stdc++.h" #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define REP(i, n) for (int i = 1; i <= (int)(n); i++) #define all(v) v.begin(), v.end() using namespace std; using ll = long long; using pi = pair<int, int>; const ll INF = 1LL << 60; int main() { char a; cin >> a; if (a <= 'Z')cout << 'A' << endl; else cout << 'a' << endl; return 0; }
文字コードで判定するとき少し不安だったが通ってよかった
ACまでの時間
ACしたのはコンテスト開始から2分後です。
B問題
問題の概要
N種類の果物が売っている店でK種類の果物を買うときの最安値を出力せよ
制約
- 入力中の値はすべて整数である
どのように考えたか
果物N種類をvectorに入れて昇順ソートしてK個の合計を出力
結果
一発AC
提出したコード
#include"bits/stdc++.h" #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define REP(i, n) for (int i = 1; i <= (int)(n); i++) #define all(v) v.begin(), v.end() using namespace std; using ll = long long; using pi = pair<int, int>; const ll INF = 1LL << 60; int main() { int n, k; cin >> n >> k; vector<int>arr(n); rep(i, n)cin >> arr[i]; sort(all(arr)); int sum = 0; rep(i, k) { sum += arr[i]; } cout << sum << endl; return 0; }
同じ価格でもいいのかと不安になりながら提出した
ACまでの時間
ACしたのはコンテスト開始から4分後です。
C問題
問題の概要
整数Nが与えられる
Nが1の時’a’、26の時'z'、27の時'aa'、703の時'aaa'のように英小文字で表現するとき、Nを英小文字で表現せよ
制約
- Nは整数
どのように考えたか
26進数とみて、上から当てはまった場合割っていき最後に割れた数で変換する
結果
コンテスト中に通すことはできませんでした
文字列の桁が増える時に何か不具合が起きている ぐらいまでしか原因究明ができていません
結果
コンテスト結果
ABの2完でした。
ABまでは順調でしたがC問題で詰まってしまいました
パフォーマンス、レーティング変動
今回のパフォーマンスは325、前回より500も下がってしまいました。
レーティングはそれに伴い-21の513となりました。
反省点
今回はC問題でかなり躓いてしまい、レーティングが下がってしまいました。
C問題以外にも目を向けて、一つの問題に固執しないようにしたいです。