NOMURA プログラミングコンテスト 2020に参加しました
AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら
解いた/挑んだ問題
A問題
問題の概要
高橋君は
起きている時間の中から勉強する時間(K分)を引いたら何分か出力せよ
制約
- 高橋君が起きている時間の長さはK分以上である
- 入力はすべて整数である
どのように考えたか
出力単位が分のみなので、起きている時刻を分に直して、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++) using namespace std; using ll = long long; using pi = pair<int, int>; const ll INF = 1LL << 60; int main() { int h, m, hh, mm, k,ans; cin >> h >> m >> hh >> mm >> k; ans = (hh * 60 + mm) - (h * 60 + m); ans -= k; cout << ans << endl; return 0; }
最初はより小さかったら繰り下げ考慮の必要があって面倒だと思っていたら分に直したら解決してよかった
ACまでの時間
ACしたのはコンテスト開始から3分後です。
B問題
問題の概要
'D'、'P'及び'?'からなる文字列Tが与えられます。
'?'をいずれかの文字に置き換え、Tの'D'及び'PD'の出現回数が最大になるとき、出現回数を出力せよ
制約
- Tは'P','D','?'からなる
どのように考えたか
PもPDも点数が変わらないので?に全部Dを入れたものの出現回数でいいんじゃないかと思った
結果
一発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++) using namespace std; using ll = long long; using pi = pair<int, int>; const ll INF = 1LL << 60; int main() { string t; cin >> t; rep(i, t.size()) { if (t[i] == '?')t[i] = 'D'; } cout << t << endl; return 0; }
あまり深く考えずに解けてよかった
ACまでの時間
ACしたのはコンテスト開始から7分弱です。
結果
コンテスト結果
ABの2完でした。
Cからとても難しく、解こうとは思ったが解けなかった
順位、パフォーマンス変動
順位は前回より7000近く上がり2094位、レーティングは491となりました。
反省点
今回は俗にいうAB早解きコンテストだったので早解きでレーティングが茶色に戻りましたが、次回からは普通のABCなので、きちんと取り組んでいきたいです。